def generate(): opt = Config() criterion = nn.BCELoss() device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")# 训练可能多卡,预测一张就够了,所以有点小不同 #dnet = torch.load('dnet1.pth').to(device)#可能需要从其他GPU移动到0号,若满足条件则不作为 #gnet = torch.load('gnet1.pth').to(device) dnet = DNet(opt).to(device) gnet = GNet(opt).to(device) state_dict = torch.load('dd.pth') new_state_dict = OrderedDict() for k,v in state_dict.items(): name = k[7:] new_state_dict[name] = v dnet.load_state_dict(new_state_dict) state_dict = torch.load('gg.pth') new_state_dict = OrderedDict() for k,v in state_dict.items(): name = k[7:] new_state_dict[name] = v gnet.load_state_dict(new_state_dict) dnet.eval() gnet.eval() noise = torch.randn(opt.batch_size, opt.nd, 1, 1, device=device) #with torch.no_grad(): fake = gnet(noise) output = dnet(fake) label = torch.full((opt.batch_size, ), opt.real_label, device=device) d_err_fake = criterion(output, label) # 生成图像的损失;还是tensor mean_score = output.mean() #生成图像的平均得分;还是tensor fake_img = vutils.make_grid(fake, normalize=True) writer = SummaryWriter(log_dir='generate_rusult') writer.add_image('fake_img', fake_img) writer.close() print('生成图像的平均损失值:%.4f'%d_err_fake.item()) print('生成图像的平均得分:%.4f'%mean_score.item())
def generate(opt, device): criterion = nn.BCELoss() dnet = DNet(opt).to(device) # 可能需要从其他GPU移动到0号,若满足条件则不作为 gnet = GNet(opt).to(device) state_dict = torch.load('dnet.pth') new_state_dict = OrderedDict() for k, v in state_dict.items(): name = k[7:] # remove 'module.' new_state_dict[name] = v dnet.load_state_dict(new_state_dict) state_dict = torch.load('gnet.pth') new_state_dict = OrderedDict() for k, v in state_dict.items(): name = k[7:] new_state_dict[name] = v gnet.load_state_dict(new_state_dict) dnet.eval() gnet.eval() noise = torch.randn(opt.batch_size, opt.nd, 1, 1, device=device) with torch.no_grad(): fake = gnet(noise) output = dnet(fake) label = torch.full((opt.batch_size, ), opt.real_label, device=device) d_err_fake = criterion(output, label) # 生成图像的损失;还是tensor mean_score = output.mean() #生成图像的平均得分;还是tensor fake_img = vutils.make_grid(fake, normalize=True) writer = SummaryWriter(log_dir='generate_result') writer.add_image('fake_img', fake_img) writer.close() print('生成图像的平均损失值:%.4f' % d_err_fake.item()) print('生成图像的平均得分:%.4f' % mean_score.item())
metavar='M', help='model file to load for evaluating.') args = parser.parse_args() # Model model_gcn = GNet() device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") state_dict = torch.load(args.load, map_location=device) model_gcn.load_state_dict(state_dict) # Turn batch norm into eval mode # for child in model_gcn.feat_extr.children(): # for ii in range(len(child)): # if type(child[ii]) == torch.nn.BatchNorm2d: # child[ii].track_running_stats = False model_gcn.eval() # Cuda use_cuda = torch.cuda.is_available() if use_cuda: model_gcn.cuda() print('Using GPU') else: print('Using CPU') # Graph graph = Graph("./ellipsoid/init_info.pickle") # Data Loader folder = CustomDatasetFolder(args.data, extensions=["dat"], print_ref=False) val_loader = torch.utils.data.DataLoader(folder, batch_size=1, shuffle=True)