赞
踩
关于Pytorch相关的资料
(1)torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0,dilation=1,groups=1, bias=True)
参数详解:
(2)torch.nn.MaxPool1d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False,ceil_mode=False)
参数详解:
(3)激活函数
(4) torch.nn.Linear(in_features, out_features, bias=True)
nn.Linear()是用来设置网络中的全连接层的,需要注意的是全连接层的输入与输出都是二维张量,一般形状为[batch_size,size],不同于卷积层要求的输入是四维张量:
参数详解:
in_features:指的是输入二维张量的大小。即输入[batchsize,size]里面的size。
out_features:指的是输出二维张量的大小,即输出的二维张量形状为[batch_size, output_size],当然,它也代表了该全连接层的神经元个数。
从输入输出的张量shape角度来理解,相当于输入为[batch_size,in_fetaures]的张量变换成了[batch_size,out_fetaures]的输出张量。
用法示例:
import torch as t
from torch import nn
# in_feature由输入张量的形状决定,out_features则决定了输出张量的形状
connected_layer = nn.Linear(in_fetaures=64*64*3,out_features=1)
#假定输入的图像形状为[64,64,3]
input = t.randn(1,64,64,3)
# 将四维张量转换为二维张量,才能作为全连接层的输入
input = input.view(1,64*64*3)
print(input.shape)
output = connected_layer(input) #调用全连接层
print(output.shape)
(5) torch.nn.Dropout(p=0.5,inplace=False)
其作用是,在 training 模式下,基于伯努利分布抽样,以概率 p 对张量 input 的值随机置0;
training 模式中,对输出以 1/(1-p) 进行 scaling,而 evaluation 模式中,使用恒等函数;
p:默认 0.5,张量元素被置0的概率;
inplace:默认 False,是否原地执行;
(6)torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None,
max_norm=None, norm_type=2.0, scale_grad_by_freq=False,
sparse=False, _weight=None)
参数详解:
(7)torch.nn.Sequential()对象
建立nn.Sequential()对象,必须小心确保一个块的输出大小与下一个块的输入大小匹配。基本上,它的行为就像一个nn.Module。
nn.Sequential()对象.add_module(层名,层class的实例)
net1 = nn.Seuential()
net1.add_module("conv",nn.Conv1d(3,3,3))
net1.add_module("batchnorm",nn.BatchNorm1d(3))
net1.add_module("activation_layer",nn.ReLU())
net2 = nn.Sequential(
nn.Conv1d(3,3,3),
nn.BatchNorm1d(3),
nn.ReLU()
)
from collections import OrderedDict
net3 = nn.Sequential(OrderedDict(
[
("conv", nn.Conv1d(3,3,3)),
('batchnorm', nn.BatchNorm1d(3)),
("activation_layer", nn.ReLU())
]
))
(8) torch.nn.ModuleList()函数
使用ModuleList可以简化写法
ModuleList可以存储对各model,传统的方法,一个model就要写一个forward,但是如果把他们都存到一个ModuleList的话,就可以使用一个forward。
ModuleList是Module的子类,当在Module中使用它的时候,就能自动识别为子module
示例:
class model2(nn.Module):
def __init__(self):
suoer(model2,self).__init__()
self.layers = nn.ModuleList([
nn.Linear(1,10), nn.ReLU(),
nn.Linear(10,100),nn.ReLU(),
nn.Linear(100,10),nn.ReLU(),
nn.Linear(10,1)])
def forward(self,x):
out = x
for i, layer in enumerate(self.layers):
out = layer(out)
return = out
(9) torch.nn.GRU(input_size,hidden_size, num_layers,bias=True, batch_first, dropout,bidirectional)
参数解读:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。