我可以将字节张量输入到我的RNN/LSTM模型中吗



我正在开发一个RNN/LSTM模型,我想在ByteTensor中对序列进行编码,以节省内存,因为我的内存非常紧张。然而,当我这样做时,模型返回以下错误:

应为标量类型Byte的对象,但为参数#2"mat2"获得了标量类型Float

所以,似乎还有其他东西需要成为Byte张量,但我不知道它是什么,因为控制台只在以下行显示错误:

output = model(predictor)

这意味着在model内部有用于对字节张量进行运算的浮点张量(很可能是矩阵乘法、加法等中的操作数(。我相信,从技术上讲,您可以通过执行model.type(torch.uint8)将它们强制转换为字节,但无论如何,您的方法迟早会失败——由于整数是离散的,因此无法在反向传播所需的梯度计算中使用它们。uint8值可以用于深度学习,以提高已经训练的网络中推理的性能和内存占用,但这是一项高级技术。对于这项任务,你最好的选择是常规的float32。如果你的GPU支持它,你也可以使用float16,也就是half,尽管它会带来额外的复杂性,我不建议初学者使用。

最新更新