pytorch代码跟着写

B站上发现了一个图像代码教学的up主,主要用pytorch和tensorflow写,下面附上链接:

B站:https://space.bilibili.com/18161609

Github:https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/pytorch_learning

后面我会记录在LeNet,AlexNet,VGGnet,GoogleNet,Resnet学习中,之前不清楚不明白的函数等知识。

 

LeNet:

#torch中要求数据为[batchsize,channel,height,weight],x = torch.rand([32,3,32,32])

  但在网络结构设置时是不用考虑batch的,只需要知道bath占第0维

#outchannel有多少个代表kenerl有多少个,self.conv1 = nn.Conv2d(3,16,5)

#view和flatten都用于展平为一维,x = x.view(-1, 32*5*5)  , x = torch.flatten(x, start_dim=1)

  view中-1代表自动推理第一个维度(batch),32通道5*5长宽代表展平后的节点个数。flatten种start_dim代表按channel第1维展开。

# compose把多个方法进行打包,成一个方法。transforms.Compose([],[])

#transforms.ToTensor()功能 <1> 维度顺序H*W*C 转换为 C*H*W,<2>数据大小[0,255]转换为[0,1]

#num_worker代表线程个数,windows下是0。方法代表把数据按照batch_size加载。

  trainloader = torch.utils.data.DataLoader(trainset,batch_size=36, shuffle=False,num_workers=0) 

#nn.CrossEntropyloss() 这个损失函数中有softmax,所以定义网络时不用设softmax层

#loss.item()把单个tensor值转换为numpy。

#在pytorch中每次batch训练时都要把历史梯度清零,optimizer.zero_grad() 

#进行预测时不用计算梯度,with torch.no_grad()

#保存模型 save_path = './Lenet.pth'  torch.save(net.state_dict(), save_path)

 

 AlexNet:

# 用Sequential构造网络,可以将多个层看成一个块 nn.Sequential

#nn.ReLU(inplace=True)中参数inplace,通过这个方法可以增加计算,同时降低内存使用(?)

#nit_weights是否进行随机初始化权重, def __init__(self,num_classes=1000,init_weights=False)。调用nit_weights函数。

 

 更新ing

 

posted @ 2020-04-22 17:37  陶雨洁  阅读(367)  评论(0编辑  收藏  举报