您的位置:首页 > 汽车 > 新车 > pytorch深度学习基础 8(简单的神经网络替换线性模型)

pytorch深度学习基础 8(简单的神经网络替换线性模型)

2024/10/6 17:26:18 来源:https://blog.csdn.net/2301_76846375/article/details/141537586  浏览:    关键词:pytorch深度学习基础 8(简单的神经网络替换线性模型)

接上一节的思路,这一节我们将使用神经网络来代替我们的之前的线性模型作为逼近函数。我们将保持其他的一切不变,只重新定义模型,小编这里构建的是最简单的神经网络,一个线性模块,一个激活函数,然后一个线性模块。

seq_model = nn.Sequential(OrderedDict([('hidden_linear', nn.Linear(1, 8)),('hidden_activation', nn.Tanh()),('output_linear', nn.Linear(8, 1))
]))

这个代码片段定义了一个简单的神经网络模型,使用nn.SequentialOrderedDict来组织模型的层。这个模型包含一个隐藏层和一个输出层,隐藏层使用Tanh激活函数。

模型结构

  1. 隐藏层 (hidden_linear):
    • 输入维度: 1
    • 输出维度: 8
    • 线性变换: nn.Linear(1, 8)
  2. 激活函数 (hidden_activation):
    • 激活函数: Tanh (nn.Tanh())
  3. 输出层 (output_linear):
    • 输入维度: 8
    • 输出维度: 1
    • 线性变换: nn.Linear(8, 1)
for name, param in seq_model.named_parameters():print(name, param.shape)

seq_model.named_parameters() 方法用于遍历模型中的所有参数,并返回每个参数的名称(name)和参数本身(params)

其他的没有变化

from collections import OrderedDictseq_model = nn.Sequential(OrderedDict([('hidden_linear', nn.Linear(1, 8)),('hidden_activation', nn.Tanh()),('output_linear', nn.Linear(8, 1))
]))optimizer = optim.SGD(seq_model.parameters(), lr=1e-4)  # <1>training_loop(n_epochs=100000,optimizer=optimizer,model=seq_model,loss_fn=nn.MSELoss(),t_u_train=t_un_train,t_u_val=t_un_val,t_c_train=t_c_train,t_c_val=t_c_val)print('output', seq_model(t_un_val))
print('answer', t_c_val)
print('hidden', seq_model.hidden_linear.weight.grad)from matplotlib import pyplot as pltt_range = torch.arange(20., 90.).unsqueeze(1)fig = plt.figure(dpi=100)
plt.xlabel("Fahrenheit")
plt.ylabel("Celsius")
plt.plot(t_u.numpy(), t_c.numpy(), 'o')
plt.plot(t_range.numpy(), seq_model(0.1 * t_range).detach().numpy(), 'c-')
plt.plot(t_u.numpy(), seq_model(0.1 * t_u).detach().numpy(), 'kx')
plt.show()

 可以看到即使使用神经网络进行训练还是有点过拟合的现象发生,总的来说做的还不错

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com