pytorch实现cnn卷积,图卷积pytorch
这篇文章主要为大家介绍了PyTorch实现卷积神经网络的搭建详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
目录
PyTorch中实现卷积的重要基础函数1、nn .Conv2d:2、nn .MaxPool2d(kernel_size=2)3、nn .ReLU()4、x.view()全部代码
PyTorch中实现卷积的重要基础函数
1、nn.Conv2d:
nn .Conv2d在框架中用于实现卷积。
nn .Conv2d(
in _ channels=32
输出通道=64
内核大小=3,
步幅=1,
填充=1,
)
1、渠道内为输入通道数。
2、渠道外为输出通道数。
3、内核大小为卷积核大小。
4、大步走为步数。
5、填充为填料情况。
6、膨胀表示空洞卷积情况。
2、nn.MaxPool2d(kernel_size=2)
nn .MaxPool2d在框架中用于实现最大池化。
具体使用方式如下:
MaxPool2d(kernel_size,
步幅=无,
填充=0,
膨胀=1,
return _ indices=False,
ceil _ mode=False)
1、内核大小为池化核的大小
2、大步走为步长
3、填充为填充情况
3、nn.ReLU()
nn .ReLU()用来实现线性单元函数,实现非线性。
4、x.view()
十。查看用于使再成形特征层的形状。
全部代码
这是一个简单的美国有线新闻网;卷积神经网络模型,用于预测手写数字识别手写体。
导入操作系统
将数组作为铭牌导入
进口火炬
将torch.nn作为神经网络导入
将torch.utils.data作为数据导入
进口火炬视觉
将matplotlib.pyplot作为血小板计数导入
# 循环世代
纪元=20
批处理大小=50
# 下载手写数字识别数据集
train _ data=火炬视觉。数据集。Mn ist(root= ./mnist/,train=True,transform=torch vision。转变。totensor(),download=True,)
# (60000, 28, 28)
打印(火车数据.火车数据.大小())
# (60000)
打印(列车数据。火车_标签。size())
train _ loader=data data loader(dataset=train _ data,batch_size=BATCH_SIZE,shuffle=True)
# 测试集
test _ data=火炬视觉。数据集。Mn ist(root= ./mnist/,train=False)
# (2000, 1, 28, 28)
# 标准化
test _ x=火炬。unsqueeze(test _ data。测试数据,尺寸=1).类型(火炬。浮动员。
测试y=测试数据。测试标签[:2000]
# 建立框架神经网络
美国有线新闻网;卷积神经网络类(NN .模块):
def __init__(self):
超级(美国有线电视新闻网,自我).__init__()
# - #
# 第一部分卷积
# - #
self.conv1=nn .顺序(
nn .Conv2d(
in_channels=1,
out_channels=32
内核大小=5,
步幅=1,
填充=2,
膨胀=1
),
nn .ReLU(),
nn .MaxPool2d(kernel_size=2),
)
# - #
# 第二部分卷积
# - #
self.conv2=nn .顺序(
nn .Conv2d(
in _ channels=32
输出通道=64
内核大小=3,
步幅=1,
填充=1,
膨胀=1
),
nn .ReLU(),
nn .MaxPool2d(kernel_size=2),
)
# - #
# 全连接池化全连接
# - #
self.ful1=nn .线性(64 * 7 * 7,512)
self.drop=nn .辍学(0.5)
self.ful2=nn .顺序(nn .线性(512,10),nn .Softmax())
# - #
# 前向传播
# - #
定义向前(自身,x):
x=self.conv1(x)
x=self.conv2(x)
x=x.view(x.size(0),-1)
x=self.ful1(x)
x=self.drop(x)
输出=自我实现2(x)
返回输出
cnn=CNN()
# 指定优化器
优化器=火炬。optim。亚当(CNN。参数(),lr=1e-3)
# 指定失败函数
loss_func=nn .交叉入口型()
对于范围(纪元):中的纪元
对于枚举(训练加载器):中的步骤(b_x,b_y)
# - #
# 计算失败并修正权值
# - #
输出=cnn(b_x)
loss=loss_func(output,b_y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
# - #
# 打印
# - #
如果步骤% 50==0:
测试输出=cnn(测试x)
pred_y=torch.max(test_output,1)[1].data.numpy()
精度=浮点((pred _ y==test _ y . data。numpy()).astype(int).sum())/float(test_y.size(0))
print(Epoch: -% epoch,,loss: %.4f % loss.data.numpy(),,accuracy: %.4f % accuracy)
以上就是PyTorch实现卷积神经网络的搭建详解的详细内容,更多关于PyTorch搭建卷积神经网络的资料请关注盛行信息技术软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。