zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    对于“口袋精灵”单元测试
    12-17:项目进度
    12-15:项目进度
    12-14:项目进度
    12-13:项目进度
    12-12:项目进度
    12-11:项目进度
    12-10:项目进度
    12-9:项目进度
    12-6:项目进度
  • 原文地址:https://www.cnblogs.com/Amyheartxy/p/12753632.html
Copyright © 2011-2022 走看看