mh采样python实现
时间: 2023-09-03 08:05:41 浏览: 163
import torch
from transformers import GPT2LMHeadModel, GPT2Tokenizer
# 加载预训练模型和分词器
model_name = 'gpt2'
model = GPT2LMHeadModel.from_pretrained(model_name)
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
# 设置生成文本的长度和温度
max_length = 100
temperature = 0.7
# 输入文本
input_text = "今天天气真好,"
# 将文本编码成输入张量
input_ids = tokenizer.encode(input_text, return_tensors='pt')
# 使用GPT2模型生成文本
output = model.generate(input_ids, max_length=max_length,
temperature=temperature, num_return_sequences=1)
# 将生成的输出解码成文本
output_text = tokenizer.decode(output, skip_special_tokens=True)
print(output_text)
相关问题
MH算法的Python实现
MH算法,即Metropolis-Hastings算法,是一种用于蒙特卡洛模拟的采样算法,用于生成服从某个概率分布的样本。下面是一个简单的MH算法的Python实现示例:
```python
import numpy as np
def target_distribution(x):
# 目标分布的概率密度函数
return np.exp(-x**2) * np.sin(x)**2
def metropolis_hastings(n_iterations, initial_value, proposal_sd):
samples = [initial_value]
current_value = initial_value
for _ in range(n_iterations):
# 从建议分布中生成一个新的候选值
candidate = np.random.normal(current_value, proposal_sd)
# 计算接受概率
acceptance_prob = min(1, target_distribution(candidate) / target_distribution(current_value))
# 接受或拒绝候选值
if np.random.rand() < acceptance_prob:
current_value = candidate
samples.append(current_value)
return samples
# 设置参数
n_iterations = 10000 # 迭代次数
initial_value = 0 # 初始值
proposal_sd = 0.5 # 建议分布的标准差
# 运行MH算法
samples = metropolis_hastings(n_iterations, initial_value, proposal_sd)
# 打印结果
print("Mean:", np.mean(samples))
print("Standard Deviation:", np.std(samples))
```
在上述代码中,`target_distribution`函数定义了目标分布的概率密度函数。`metropolis_hastings`函数实现了MH算法的主要逻辑,包括生成候选值、计算接受概率以及接受或拒绝候选值。最后,通过运行`metropolis_hastings`函数,可以得到采样的样本序列,并计算样本的均值和标准差。
请注意,这只是一个简单的示例,实际应用中可能需要根据具体问题进行适当的修改和调整。
MH算法的Python代码
MH算法(Metropolis-Hastings算法)是一种用于特卡洛模拟的采样算法,用于生成服从某个概率分布的样本。下面是一个简单的MH算法的Python代码示例:
```python
import numpy as np
def target_distribution(x):
# 定义目标分布函数,这里以标准正态分布为例
return np.exp(-0.5 * x**2) / np.sqrt(2 * np.pi)
def proposal_distribution(x, sigma):
# 定义建议分布函数,这里以均值为x,标准差为sigma的正态分布为例
return np.random.normal(x, sigma)
def metropolis_hastings(num_samples, sigma):
samples = []
x = 0 # 初始样本值
for _ in range(num_samples):
x_new = proposal_distribution(x, sigma) # 从建议分布中生成新样本
acceptance_ratio = target_distribution(x_new) / target_distribution(x)
if np.random.uniform() < acceptance_ratio:
x = x_new # 接受新样本
samples.append(x)
return samples
# 示例运行
num_samples = 10000 # 生成样本数量
sigma = 1 # 建议分布的标准差
samples = metropolis_hastings(num_samples, sigma)
```
这段代码实现了一个简单的MH算法,其中`target_distribution`函数定义了目标分布,`proposal_distribution`函数定义了建议分布,`metropolis_hastings`函数实现了MH算法的主要逻辑。在示例运行中,我们生成了10000个样本,并将其存储在`samples`列表中。
阅读全文