pytorch LSTM测试

本文介绍了如何确保PyTorch神经网络训练结果的复现性,详细讲解了DataLoader的多核加载、nn.Linear层的使用、LSTM层的输入输出操作,以及Tensor对象的形状变换和损失函数CrossEntropyLoss与MSELoss的适用场景。通过实例代码展示了整个过程。
摘要由CSDN通过智能技术生成

如何保证神经网络训练结果的复现性

通过在python模块最开始设置随机种子,使得之后所有生成的随机数相同。

torch.manual_seed(10000)
np.random.seed(10000)
random.seed(10000)

DataLoader()多核加载

# 只有在数据量很大的时候使用多核加载才能提高速度,数据量小时反而会降低速度
train_loader = DataLoader(dataset=torch_dataset, batch_size=batch_size, shuffle=False)  # , num_workers=2)

Linear() 层

nn.Linear()层的使用无需初始化weight和bias,这些pytorch都自动初始化了,如果有需要可以在forward()方法中手动初始化。

def init_weights(self):
    init_range = 0.1
    self.linear.bias.data.zero_()
    self.linear.weight.data.uniform_(-init_range, init_range)
    self.linear.weight.data.zero_()

LSTM()层输入输出

lstm层的输入可以为

output, hidden = self.lstm(x, hidden)

也可以让pytorch自动初始化hidden,即不传入hidden,写作

output, _ = self.lstm(x)

pytorch默认初始化相当于如下操作,建议使用默认的初始化。

def init_hidden(self, batch_size, required_grad=True):
    weight = next(self.parameters())
    new_weight = weight.new_zeros((self.num_layers, batch_size, self.hidden_size),
                                  requires_grad=required_grad)
    weight_tuple = (new_weight, new_weight)
    return weight_tuple

def repackage_hidden(h):
    if isinstance(h, torch.Tensor):
        return h.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值