NJU1healer的个人博客分享 http://blog.sciencenet.cn/u/NJU1healer

博文

PyTorch的Tensor详解创建以及nn.ReLU与F.ReLU的区别

已有 3655 次阅读 2020-10-23 14:33 |个人分类:Pytorch|系统分类:科研笔记

(一)PyTorch的Tensor(张量)

这一部分详细参考博客: PyTorch的Tensor(张量)

主要包括:Tensor与Variable与区别、张量的创建(张量的创建有三大方法,第一类是直接创建,第二类是依据数值创建,第三类是依据概率创建)。

image.png

image.png

image.png

(二)PyTorch之nn.ReLU与F.ReLU的

import torch.nn as nn

import torch.nn.functional as F

import torch.nn as nn

 

class AlexNet_1(nn.Module):

 

    def __init__(self, num_classes=n):

        super(AlexNet, self).__init__()

        self.features = nn.Sequential(

            nn.Conv2d(3, 64, kernel_size=3, stride=2, padding=1),

            nn.BatchNorm2d(64),

            nn.ReLU(inplace=True),

         )

 

    def forward(self, x):

        x = self.features(x)

 

class AlexNet_2(nn.Module):

 

    def __init__(self, num_classes=n):

        super(AlexNet, self).__init__()

        self.features = nn.Sequential(

            nn.Conv2d(3, 64, kernel_size=3, stride=2, padding=1),

            nn.BatchNorm2d(64),

         )

 

    def forward(self, x):

        x = self.features(x)

        x = F.ReLU(x)

       在如上网络中,AlexNet_1与AlexNet_2实现的结果是一致的,但是可以看到将ReLU层添加到网络有两种不同的实现,即nn.ReLU和F.ReLU两种实现方法
       其中nn.ReLU作为一个层结构,必须添加到nn.Module容器中才能使用,而F.ReLU则作为一个函数调用,看上去作为一个函数调用更方便更简洁。具体使用哪种方式,取决于编程风格。在PyTorch中,nn.X都有对应的函数版本F.X,但是并不是所有的F.X均可以用于forward或其它代码段中,因为当网络模型训练完毕时,在存储model时,在forward中的F.X函数中的参数是无法保存的。也就是说,在forward中,使用的F.X函数一般均没有状态参数,比如F.ReLU,F.avg_pool2d等,均没有参数,它们可以用在任何代码片段中。

点滴分享,福泽你我!Add oil!



https://blog.sciencenet.cn/blog-3428464-1255478.html

上一篇:log_softmax、softmax和的nll_loss、nn.CrossEntropy区别(Pytorch学习笔记)
下一篇:Pytorch 分类二维矩阵图像和一维向量的方法及常用函数总结
收藏 IP: 103.149.249.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

全部作者的其他最新博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-30 15:35

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部