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 模型生成样本。

代码解释:

  1. 导入库: 首先,代码导入了必要的库,包括 torchnumpymatplotlib
  2. 加载预训练模型: 然后,代码加载了一个预训练的 PyTorch 模型,存储在变量 pretrained_net1 中。
  3. 准备数据: 接下来,代码创建了一个输入数据 y_fix,并将其移动到 GPU (如果可用)。
  4. 生成样本: 然后,代码使用加载的模型和输入数据生成后验样本。
  5. 保存样本: 最后,代码将生成的样本保存到一个 CSV 文件中。

注意事项:

  • 确保预训练模型文件 MoS2_inn.pkl 存在于当前目录中。
  • 确保已安装所有必要的库。
  • 可以根据需要修改代码中的参数。

希望这对您有所帮助!

使用预训练 PyTorch 模型生成样本

原文地址: https://www.cveoy.top/t/topic/moz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录