本文为大家讲解了pytorch实现CNN卷积神经网络,供大家参考,具体内容如下

我对卷积神经网络的一些认识

卷积神经网络是时下最为流行的一种深度学习网络,由于其具有局部感受野等特性,让其与人眼识别图像具有相似性,因此被广泛应用于图像识别中,本人是研究机械故障诊断方面的,一般利用旋转机械的振动信号作为数据。

对一维信号,通常采取的方法有两种,第一,直接对其做一维卷积,第二,反映到时频图像上,这就变成了图像识别,此前一直都在利用keras搭建网络,最近学了pytroch搭建cnn的方法,进行一下代码的尝试。所用数据为经典的minist手写字体数据集

import torch

import torch.nn as nn

import torch.utils.data as Data

import torchvision

import matplotlib.pyplot as plt

`EPOCH = 1

BATCH_SIZE = 50

LR = 0.001

DOWNLOAD_MNIST = True

从网上下载数据集:

```python

train_data = torchvision.datasets.MNIST(

root="./mnist/",

train = True,

transform=torchvision.transforms.ToTensor(),

download = DOWNLOAD_MNIST,

)

print(train_data.train_data.size())

print(train_data.train_labels.size())

```plt.imshow(train_data.train_data[0].numpy(), cmap='autumn')

plt.title("%i" % train_data.train_labels[0])

plt.show()

train_loader = Data.DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True)

test_data = torchvision.datasets.MNIST(root="./mnist/", train=False)

test_x = torch.unsqueeze(test_data.test_data, dim=1).type(torch.FloatTensor)[:2000]/255.

test_y = test_data.test_labels[:2000]

class CNN(nn.Module):

def __init__(self):

super(CNN, self).__init__()

self.conv1 = nn.Sequential(

nn.Conv2d(

in_channels=1,

out_channels=16,

kernel_size=5,

stride=1,

padding=2,

),

nn.ReLU(),

nn.MaxPool2d(kernel_size=2),

)

self.conv2 = nn.Sequential(

nn.Conv2d(16, 32, 5, 1, 2),

nn.ReLU(),

nn.MaxPool2d(2),

)

self.out = nn.Linear(32*7*7, 10) # fully connected layer, output 10 classes

def forward(self, x):

x = self.conv1(x)

x = self.conv2(x)

x = x.view(x.size(0), -1) # flatten the output of conv2 to (batch_size, 32*7*7)

output = self.out(x)

return output

optimizer = torch.optim.Adam(cnn.parameters(), lr=LR)

loss_func = nn.CrossEntropyLoss()

from matplotlib import cm

try: from sklearn.manifold import TSNE; HAS_SK = True

except: HAS_SK = False; print('Please install sklearn for layer visualization')

def plot_with_labels(lowDWeights, labels):

plt.cla()

X, Y = lowDWeights[:, 0], lowDWeights[:, 1]

for x, y, s in zip(X, Y, labels):

c = cm.rainbow(int(255 * s / 9)); plt.text(x, y, s, backgroundcolor=c, fontsize=9)

plt.xlim(X.min(), X.max()); plt.ylim(Y.min(), Y.max()); plt.title('Visualize last layer'); plt.show(); plt.pause(0.01)

plt.ion()

for epoch in range(EPOCH):

for step, (b_x, b_y) in enumerate(train_loader):

output = cnn(b_x)

loss = loss_func(output, b_y)

optimizer.zero_grad()

loss.backward()

optimizer.step()

if step % 50 == 0:

test_output = cnn(test_x)

pred_y = torch.max(test_output, 1)[1].data.numpy()

accuracy = float((pred_y == test_y.data.numpy()).astype(int).sum()) / float(test_y.size(0))

print("Epoch: ", epoch, "| train loss: %.4f" % loss.data.numpy(),

"| test accuracy: %.2f" % accuracy)

plt.ioff()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python cnn入门_pytorch实现CNN卷积神经网络相关推荐

  1. DL之CNN优化技术:学习卷积神经网络CNN的优化、实践经验(练习调参)、从代码深刻认知CNN架构之练习技巧

    DL之CNN优化技术:学习卷积神经网络CNN的优化.调参实践.从代码深刻认知CNN架构之练习技巧 目录 卷积神经网络CNN调参学习实践 练习技巧 1.练习攻略一 2.VGG16练习攻略二 卷积神经网络 ...

  2. python识别人脸多种属性_人脸检测及识别python实现系列(4)——卷积神经网络(CNN)入门...

    人脸检测及识别python实现系列(4)--卷积神经网络(CNN)入门 上篇博文我们准备好了2000张训练数据,接下来的几节我们将详细讲述如何利用这些数据训练我们的识别模型.前面说过,原博文给出的训练 ...

  3. CNN的Python实现——第四章:卷积神经网络的结构

    文章目录 第4章 卷积神经网络的结构 4.1 概述 4.1.1 局部连接 4.1.2 参数共享 4.1.3 3D特征图 4.2 卷积层 4.2.1 卷积运算及代码实现 4.2.2 卷积层及代码初级实现 ...

  4. CNN笔记:通俗理解卷积神经网络

    通俗理解卷积神经网络(cs231n与5月dl班课程笔记) http://blog.csdn.net/v_july_v/article/details/51812459 1 前言 2012年我在北京组织 ...

  5. CNN笔记:通俗理解卷积神经网络--理解不同输入通道和卷积核通道关系(红色部分)

    1 前言 2012年我在北京组织过8期machine learning读书会,那时"机器学习"非常火,很多人都对其抱有巨大的热情.当我2013年再次来到北京时,有一个词似乎比&qu ...

  6. CNN笔记:通俗理解卷积神经网络【转】

    本文转载自:https://blog.csdn.net/v_july_v/article/details/51812459 通俗理解卷积神经网络(cs231n与5月dl班课程笔记) 1 前言 2012 ...

  7. 【算法笔记】CNN Convolutional Neural Network (卷积神经网络)

    1. 先皮一会 久仰CNN的大名,进入新闻界,加入美国有线电视新闻网,成为一个跑得飞快的记者一直是我的梦想.但是,平庸的才能无法让我成为一名空间移动系的法师,现在只能努力成为一名精神系人偶师. 话说前 ...

  8. 零基础入门深度学习(4) - 卷积神经网络

    无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...

  9. 【三】零基础入门深度学习:卷积神经网络基础之初识卷积

    (给机器学习算法与Python学习加星标,提升AI技能) 作者 | 孙高峰 百度深度学习技术平台部资深研发工程师 内容来源 | 百度飞桨深度学习集训营 本文转自飞桨PaddlePaddle 导读 百度 ...

  10. 从入门到精通:卷积神经网络初学者指南

    转载自:http://www.jiqizhixin.com/article/1363?utm_source=tuicool&utm_medium=referral 这是一篇向初学者讲解卷积神经 ...

最新文章

  1. mysql myasam_MySQL锁(MyISAM和InnoDB)
  2. NAT类型及检测方法
  3. html gridview绑定数据,winform,devexpress GridControl中GridView数据绑定
  4. 无限循环小数转化为分数形式
  5. c# 中通快递对接_快递共配是什么?行业前景怎么样?
  6. 将数据、代码、栈放入不同的栈(8086)
  7. 中蜂几月份自然分蜂_蜜蜂的种类:北黑蜂,中华蜜蜂,皖南中蜂,贵州纳雍中蜂等等...
  8. FEIM Studios 团队欢迎您加入
  9. 用好CloudIDE提升Web全栈编码效率
  10. mysql联表查球队比分_mysql – 什么可以导致连接比分为两个查询慢?
  11. java map 更新_更新Map键的值java
  12. 体验 DreamSpark
  13. ES6 javascript 实用开发技巧 1
  14. STM32(5)——通用定时器基本定时器
  15. Javascript --- 模板引擎
  16. 35年老程序员个人谈:C语言时代行将落幕
  17. 2020阿里巴巴社招面试题
  18. 如何用excel筛选相似内容_excel怎么筛选出相同内容
  19. SpringBoot 导出Word文档(doc\docx) Office无法打开,WPS正常等坑
  20. NAACL 2022 | FACTPEGASUS:抽象摘要的真实性感知预训练和微调

热门文章

  1. 【字幕制作】从IDX/SUB到PGS的小白入门教程
  2. 灰色系统理论及其应用
  3. 编译原理实验五:编译器自动生成工具
  4. 计算机怎么退出远程桌面连接,怎么退出远程桌面控制?远程桌面软件哪个好?
  5. 怎样编辑pdf文件?手把手教你如何使用PDF编辑器
  6. 软件评测师32小时-第一小时 软件测试概论
  7. 进价移动加权核算体系
  8. echarts 图表数据更新方式
  9. slqmf刀模工具_CAD刀模绘图插件|CAD刀模绘图插件(SLQMF刀模工具)下载v3.0 免费版 - 欧普软件下载...
  10. SNMP Trap调试记录