如何在torch中添加新的层

如何在torch中添加新的层,第1张

比如你想写一个新Module叫ABC,那就写个文件叫ABC.lua,第一行

local ABC, parent = torch.class('nn.ABC', 'nn.Module')如果ABC是Criterion的话则是

local ABC, parent = torch.class('nn.ABC', 'nn.Criterion')

然后把必须有的两个function

ABC:updateOutput

ABC:updateGradInput给写了,如果有参数的话还需要

ABC:accGradParameters

基本就行了。

如果需要CUDA的GPU运算的话,记得所有运算都调用tensor里定义的function。

想要深度优化的话就得自己写CUDA了。

作用:启用 Batch Normalization 和 Dropout,如果模型中有BN层(Batch Normalization)和Dropout,需要在训练时添加model.train()。model.train()是保证BN层能够用到每一批数据的均值和方差。对于Dropout,model.train()是随机取一部分网络连接来训练更新参数。

作用:不启用 Batch Normalization 和 Dropout,如果模型中有BN层(Batch Normalization)和Dropout,在测试时添加model.eval()。model.eval()是保证BN层能够用全部训练数据的均值和方差,即测试过程中要保证BN层的均值和方差不变。对于Dropout,model.eval()是利用到了所有网络连接,即不进行随机舍弃神经元。

在指定的维度dim上对序列seq进行连接 *** 作。

参数:

例子:

torch.Tensor.expand( sizes)* → Tensor

返回张量的一个新视图,可以将张量的单个维度扩大为更大的尺寸。

张量也可以扩大为更高维,新增加的维度将附在前面。 扩大张量不需要分配新内存,仅仅是新建一个张量的视图。任意一个一维张量在不分配新内存情况下都可以扩展为任意的维度。

传入-1则意味着维度扩大不涉及这个维度。

参数:

例子:

torch.squeeze(input, dim=None, out=None) → Tensor

除去输入张量input中数值为1的维度,并返回新的张量。如果输入张量的形状为( [图片上传失败...(image-786ec5-1580566115084)]

),那么输出张量的形状为( [图片上传失败...(image-a0a179-1580566115084)]

)。

当通过dim参数指定维度时,维度压缩 *** 作只会在指定的维度上进行。如果输入向量的形状为( [图片上传失败...(image-1088a1-1580566115084)]

),squeeze(input, 0)会保持张量的维度不变,只有在执行squeeze(input, 1)时,输入张量的形状会被压缩至( [图片上传失败...(image-759892-1580566115084)]

)。

如果一个张量只有1个维度,那么它不会受到上述方法的影响。

输出的张量与原张量共享内存,如果改变其中的一个,另一个也会改变。

参数:

例子:

torch.Tensor.repeat( sizes)*

沿着指定的维度重复张量。不同于expand()方法,本函数复制的是张量中的数据。

参数:

例子:

torch.Tensor.unfold(dim, size, step) → Tensor

返回一个新的张量,其中元素复制于有原张量在dim维度上的数据,复制重复size次,复制时的步进值为step。

参数:

例子:

torch.Tensor.narrow(dimension, start, length) → Tensor

返回一个经过缩小后的张量。 *** 作的维度由dimension指定。缩小范围是从start开始到start+length。执行本方法的张量与返回的张量共享相同的底层内存。

参数:

例子:

torch.Tensor.view( args)* → Tensor

返回一个有相同数据但是不同形状的新的向量。

返回的装两必须与原张量有相同的数据和相同的元素个数,但是可以有不同的尺寸。

参数:

例子:

torch.Tensor.resize_( sizes)*

将张量的尺寸调整为指定的大小。如果元素个数比当前的内存大小大,就将底层存储大小调整为与新元素数目一致的大小。

如果元素个数比当前内存小,则底层存储不会被改变。原来张量中被保存下来的元素将保持不变,但新内存将不会被初始化。

参数:

例子:

torch.Tensor.permute( dims)*

将执行本方法的张量的维度换位。

参数:

例子:

torch.Tensor.element_size() → int

查看某类型张量单个元素的字节数。

例子:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11623300.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存