Pytorch笔记

nn.Conv2d(self, in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True))

参数:

in_channel: 输入数据的通道数,例RGB图片通道数为3;
out_channel: 输出数据的通道数,这个根据模型调整;
kennel_size: 卷积核大小,可以是int,或tuple;kennel_size=2,意味着卷积大小(2,2),  kennel_size=(2,3),意味着卷积大小(2,3)即非正方形卷积
stride:步长,默认为1,与kennel_size类似,stride=2,意味着步长上下左右扫描皆为2, stride=(2,3),左右扫描步长为2,上下为3;
 

torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

参数:

num_features:一般输入参数为batch_size×num_features×height×width,即为其中特征的数量
eps:分母中添加的一个值,目的是为了计算的稳定性,默认为:1e-5
momentum:一个用于运行过程中均值和方差的一个估计参数
affine:当设为true时,会给定可以学习的系数矩阵gamma和beta
 

torch.nn.AvgPool2d( kernel_size , stride=None , padding=0 , ceil_mode=False , count_include_pad=True , divisor_override=None )

参数:

kernel_size:池化核的尺寸大小
stride:窗口的移动步幅,默认与kernel_size大小一致
padding:在两侧的零填充宽度大小
ceil_mode:设为True时,在计算输出形状的过程中采用向上取整的操作,否则,采用向下取整
count_include_pad:布尔类型,当为True时,将在平均池化计算中包括零填充,否则,不包括零填充
divisor_override:如果被指定,则除数会被代替成divisor_override。换句话说,如果不指定该变量,则平均池化的计算过程其实是在一个池化核内,将元素相加再除以池化核的大小,也就是divisor_override默认为池化核的高×宽;如果该变量被指定,则池化过程为将池化核内元素相加再除以divisor_override。


torch.save(model, 'net.pth')      # 保存整个神经网络的模型结构以及参数
torch.save(model.state_dict(), 'net_params.pth')      # 只保存模型参数
model = torch.load('net.pth')     # 加载整个神经网络的模型结构以及参数
model.load_state_dict(torch.load('net_params.pth'))     # 仅加载参数

model.train( ) :启用 BatchNormalization 和 Dropout
model.eval( ) :不启用 BatchNormalization 和 Dropout
训练完train样本后,生成的模型model要用来测试样本。在model(test)之前,需要加上model.eval(),否则的话,有输入数据,即使不训练,它也会改变权值。这是model中含有batch normalization层所带来的的性质。

 torch.max(a): 返回输入a中所有元素的最大值。
 torch.max(a, 0): 返回每一列的最大值,且返回索引(返回最大元素在各列的行索引)。
 torch.max(a, 1): 返回每一行的最大值,且返回索引(返回最大元素在各行的列索引)。
 torch.max()[0]: 只返回最大值。
 torch.max()[1]: 只返回最大值的索引。
 torch.max()[0].data: 只返回variable中的数据部分(去掉Variable containing)。
 torch.max()[0].data.numpy(): 把数据转化成 numpy ndarray。
 torch.max()[0].numpy(): 把数据转化成 numpy ndarray。

a: tensor([[ 1,  5, 62, 54],
        [ 2,  6,  2,  6],
        [ 2, 65,  2,  6]]) 

torch.max(a): tensor(65) 

torch.max(a, 0): torch.return_types.max(
values=tensor([ 2, 65, 62, 54]),
indices=tensor([2, 2, 0, 0])) 

torch.max(a, 0)[0]: tensor([ 2, 65, 62, 54]) 

torch.max(a, 0)[1]: tensor([2, 2, 0, 0]) 

torch.max(a, 0)[1].data: tensor([2, 2, 0, 0]) 

torch.max(a, 0)[1].data.numpy(): [2 2 0 0] 

torch.max(a, 0)[1].numpy(): [2 2 0 0] 

torch.max(a, 1): torch.return_types.max(
values=tensor([62,  6, 65]),
indices=tensor([2, 3, 1]))

准确率的计算 

pred_y = torch.max(predict, 1)[1].numpy()
label_y = torch.max(label, 1)[1].data.numpy()
accuracy = (pred_y == label_y).sum() / len(label_y)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值