torch使用half()碰到的问题记录,记录torch随机划分数据集

pytorch使用half(),也就是f16来训练可以减少内存开销

使用中碰到的问题有:
1.f16如何转换最省事儿:
2.f16转换之后会出现梯度NAN的问题

解决
问题一:
直接在模型下面使用
    ae = AutoEncoder1(dimenstions,activation=nn.ReLU()).to(device)
	ae.half()
就可以了
问题二:
使用了Adam优化器
这里需要调整Adam esp
参考 https://blog.csdn.net/gwb281386172/article/details/104705195
同时如果不能解决加入梯度裁剪
        loss = loss_fn(pred,x1)
        
        loss.backward()
        torch.nn.utils.clip_grad_norm_(parameters=model.parameters(), max_norm=10, norm_type=2)
        optimizer.step()

随机数据集的划分

train_data = torch.from_numpy(my_arr_n2)#my_arr_n2是一个numpy数组
train_set, test_set = torch.utils.data.random_split(train_data, [0.8, 0.2])
train_loader = torch.utils.data.DataLoader(train_set, batch_size=batch_size, shuffle=True)
test_laoder = torch.utils.data.DataLoader(test_set, batch_size=batch_size, shuffle=False)

如果需要直接使用test数据集,可以直接 train_data[test_set.ind***],忘了ind啥了,可以使用dir(test_set)查看一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值