11 从0开始学PyTorch | PyTorch使用nn模块、手工实现神经网络

上一小节对神经网络有了基本的了解,这一小节就看一下如何用代码来实现一个神经网络。
我们所用的案例还是那个温度转换的案例,只不过需要我们把之前的线性模型替换成神经网络模型,并重新训练以找到适合神经网络的权重。
依照我们的经验,前面有一些前置步骤,一部分大部分代码我们都学过了,包括了引用相关的包,设置notebook的显示规范,初始化数据,分割训练集和验证集以及对数据进行标准化。

使用nn模块

%matplotlib inline
import numpy as np
import torch
import torch.optim as optim

torch.set_printoptions(edgeitems=2, linewidth=75)

t_c = [0.5,  14.0, 15.0, 28.0, 11.0,  8.0,  3.0, -4.0,  6.0, 13.0, 21.0]
t_u = [35.7, 55.9, 58.2, 81.9, 56.3, 48.9, 33.9, 21.8, 48.4, 60.4, 68.4]
t_c = torch.tensor(t_c).unsqueeze(1) #这个地方跟之前有些区别,我们给数据进行了升维,目的是把数据转化成单个的样本,如果这里不太明白不要紧,后面会讲
t_u = torch.tensor(t_u).unsqueeze(1) 

t_u.shape
outs:
torch.Size([11, 1])

n_samples = t_u.shape[0]
n_val = int(0.2 * n_samples)

shuffled_indices = torch.randperm(n_samples)

train_indices = shuffled_indices[:-n_val]
val_indices = shuffled_indices[-n_val:]

train_indices, val_indices
outs:
(tensor([5, 6, 1, 4, 9, 0, 3, 2, 8]), tensor([ 7, 10]))
#训练集数据获取
t_u_train = t_u[train_indices]
t_c_train = t_c[train_indices]
#验证集数据获取
t_u_val = t_u[val_indices]
t_c_val = t_c[val_indices]

# 某种很简单的数据标准化
t_un_train = 0.1 * t_u_train
t_un_val = 0.1 * t_u_val

在PyTorch中,提供了一个torch.nn模块,里面提供了各种创建神经网络的功能。

#加载nn模块
import torch.nn as nn

linear_model = nn.Linear(1, 1) # 这里我们使用的仍然是nn模块里面的线性模型,传入的参数1,1分别为输入tensor的大小和输出tensor的大小,还有一个默认的参数‘带有偏置’
linear_model(t_un_val)#调用模型
outs:tensor([[2.4104],
        [5.8570]], grad_fn=<AddmmBackward0>)

这里用到的l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值