2019-08-10 – Python量化投资

2019-08-10

CNN卷积神经网络

import torch

import torch.nn as nn #为了简化,直接利用nn.nn来进行构建神经层

from torch.autograd import Variable

import torch.utils.data as Data

import torchvision #一个库,里面包含了很多图片和数据的

import matplotlib.pyplot as plt

Hyper Parameters

EPOCH=1 #train the training data n times,to save time,we just train 1 epoch

……

train_data=torchvision.datasets.MNIST( #MNIST是一个下载的代码,你可以去网上下载,下载到本地

root=’./mnist’, #将这个保存,保存到root里面,出来以后会自动出现图

train=Ture #因为是训练数据库,所以正确训练

transform=torchvision.transforms.ToTensor(), #将网上下载的数据(图片像素点的值)改成tensor的格式,压缩到(0,1),

download=DOWNLOAD_MINIST

只有在train-loadeder是压缩(0,1),所以在test——data中手动除以255#

class CNN(nn.Module):

def init(self):

    super(CNN,self)._init_()
    self.conv1=nn.Sequential( 
    nn.Conv2d(   #就相当于过滤器f ilter,高度决定能提取多少特征值,长宽决定提取大小 ,可以想象将一张图片进行筛选,并筛选为更厚的一张图片。大小如果改变就是改变kernet扫描形式 #2d就是二维#(1,28,28)
         in_channels=1  #输入厚度为1
          out_channels=16 #输出厚度为16,16张图
          kernet_size=5   #5*5的扫描形式
          stride=1 #步长,从一个到下一个的跳度
           padding=2  #在外面加多长的像素,计算结果一般是(kernal_size-1)/2

), #—>(16,28,28)

  nn.ReLU(),#----->(16,28,28)
  nn.MaxPool2d(kernel_size=2)  #取这个filter里面最大(长宽)的进行,长宽改变,厚度不变 #---->(16,14,14)

self.conv2=nn.Sequential( #(16,14,14)

         nn.Conn2d(16,32,5,1,2),  #----》(32,14,14)

nn.ReLU(), #—->(32,14,14)

     nn.MaxPoll2d(2)      #(32,7,7)-----》三维数据

)

self.out=nn.Linear(3277,10) #前者指的是(32,7,7)是三维的而此处进行展平操作,后者指10个分类0~9

def forward(self,x):

x=self.conv1(x)

x=self.conv2(x) #(batch,32,7,7)

x=x.view(x.size(0),-1) #(batch,3277)批处理进行展平

output=self.out(x)

return output

cnn=CNN()

https://www.jianshu.com/p/1fff0e3cbac2

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论