赞
踩
import matplotlib as mpl mpl.use('Agg')
plt.savefig("test1_1.png")
保存为图片# 写法一
net = nn.Sequential(
nn.Linear(num_inputs, 1)
# 此处还可以传入其他层
)
# 写法二
net = nn.Sequential()
net.add_module('linear', nn.Linear(num_inputs, 1))
# net.add_module ......
# 写法三
from collections import OrderedDict
net = nn.Sequential(OrderedDict([
('linear', nn.Linear(num_inputs, 1))
# ......
]))
# 统一顶一个学习率
optimizer = optim.SGD(net.parameters(), lr=0.03)
# 对每个层都定义一个学习率
optimizer =optim.SGD([
# 如果对某个参数不指定学习率,就使用最外层的默认学习率
{'params': net.subnet1.parameters()}, # lr=0.03
{'params': net.subnet2.parameters(), 'lr': 0.01}
], lr=0.03)
print('epoch: %d, test_ acc: %.5f, train_l: %.5f, train_acc: %.5f' % (i + 1, test_acc_sum / n, train_l_sum / n, train_acc_sum / n))
# 本函数已保存在d2lzh_pytorch def evaluate_accuracy(data_iter, net): acc_sum, n = 0.0, 0 for X, y in data_iter: if isinstance(net, torch.nn.Module): #如果net是继承nn.Moudel net.eval() # 评估模式, 这会关闭dropout acc_sum += (net(X).argmax(dim=1) == y).float().sum().item() net.train() # 改回训练模式 else: # 如果net是自定义的模型 if('is_training' in net.__code__.co_varnames): # 如果有is_training这个参数 # 将is_training设置成False acc_sum += (net(X, is_training=False).argmax(dim=1) == y).float().sum().item() else: acc_sum += (net(X).argmax(dim=1) == y).float().sum().item() n += y.shape[0] return acc_sum / n
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。