pytorch:解决训练数据不能被batchsize整除

训练seq2seq模型时,训练数据一般都不能刚好和batchsize成整数倍数关系。
那么在每个epoch训练中,最后会剩余一组数据量<batchsize的数据。
此时这些数据可能会不适合编写的网络形状,或者代码中reshape形状的部分,在rnn中还会不匹配隐状态形状。
因为我的训练数据量很大,所以直接把最后一个不足batch的数据组抛弃就好。

Data = Dataset_Pred
timeenc = 0 if args.embed!='timeF' else 1
flag = 'pred'; shuffle_flag = False; drop_last = False; batch_size = 1

freq = args.detail_freq

data_set = Data(
    root_path=args.root_path,
    data_path=args.data_path,
    flag=flag,
    size=[args.seq_len, args.label_len, args.pred_len],
    features=args.features,
    target=args.target,
    timeenc=timeenc,
    freq=freq
)
data_loader = DataLoader(
    data_set,
    batch_size=batch_size,
    shuffle=shuffle_flag,
    num_workers=args.num_workers,
    drop_last=drop_last)

解决这个问题,在pytorch中使用dataloader加载数据,只需要在参数里加一个

drop_last=True

就可以了,十分方便!
————————————————
版权声明:本文为CSDN博主「y hat」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhangqiqiyihao/article/details/118088321

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值