• 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

  • 相关阅读:
    seajs加载angularjs
    seajs加载jquery提示$ is not a function
    java 动态代理
    C#第三章--对象和类
    Android笔记--两种双击退出程序的方法
    Android--Volley基本用法及自定义
    Win10专业版只要12.99元?应用商店Bug福利也算数
    新人报道
    排序

  • 原文地址:https://www.cnblogs.com/Amyheartxy/p/12753632.html
Copyright © 2020-2023  润新知