使用预训练 PyTorch 模型生成样本
import torch
import numpy as np
import model
from string import ascii_letters
import matplotlib.pyplot as plt
from torch.autograd import Variable
from numpy import sin, cos
import config as c
device = 'cuda' if torch.cuda.is_available() else 'cpu'
filename = 'MoS2_inn.pkl'
pretrained_net1 = torch.load(filename, map_location=lambda storage, loc: storage)
model_b = model.model
model_b.load_state_dict(pretrained_net1)
# print(model_b)
n_samps = 100
y0 = 1.0
y_fix = np.zeros((n_samps, 1)) + y0
y_fix = torch.tensor(y_fix, dtype=torch.float)
# y_fix += c.add_y_noise * torch.randn(n_samps, c.ndim_y)
y_fix = torch.cat([torch.randn(n_samps, c.ndim_z), c.add_z_noise * torch.zeros(n_samps, 0), y_fix], dim=1)
y_fix = y_fix.to(device)
# 后验样本生成
rev_x0 = model_b(y_fix, rev=True)
print(rev_x0)
## 当前反向模型预测
out_y0 = model_b(rev_x0)
# print(out_y0[:,-1])
## 保存生成的样本
rev_x = rev_x0.cpu().data.numpy()
fname = 'gen_samps.csv'
np.savetxt(fname, rev_x, fmt='%.6f', delimiter=',')
print('生成样本: 完成!')
这段代码演示了如何使用预训练的 PyTorch 模型生成样本。
代码解释:
- 导入库: 首先,代码导入了必要的库,包括
torch、numpy和matplotlib。 - 加载预训练模型: 然后,代码加载了一个预训练的 PyTorch 模型,存储在变量
pretrained_net1中。 - 准备数据: 接下来,代码创建了一个输入数据
y_fix,并将其移动到 GPU (如果可用)。 - 生成样本: 然后,代码使用加载的模型和输入数据生成后验样本。
- 保存样本: 最后,代码将生成的样本保存到一个 CSV 文件中。
注意事项:
- 确保预训练模型文件
MoS2_inn.pkl存在于当前目录中。 - 确保已安装所有必要的库。
- 可以根据需要修改代码中的参数。
希望这对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/moz 著作权归作者所有。请勿转载和采集!