Mxnet数据类型为float64,但一直说它是float32

皮载彩

我是pytorch和tensorflow用户。为了使用AWS sagemaker的弹性推断,我遇到了Mxnet。

Mxnet gluon数据集api似乎与pytorch的数据集非常相似。

class CustomDataset(mxnet.gluon.data.Dataset):
    def __init__(self):
        self.train_df = pd.read_csv('/shared/KTUTOR/test_summary_data.csv')
    def __getitem__(self, idx):
        return mxnet.nd.array(self.train_df.loc[idx, ['TT', 'TF', 'FT', 'FF']], dtype='float64'), mxnet.nd.array(self.train_df.loc[idx, ['p1']], dtype='float64')
    def __len__(self):
        return len(self.train_df)

我如上所述定义了customdataset,并将数据类型设置为float64。

test_data = mxnet.gluon.data.DataLoader(CustomDataset(), batch_size=8, shuffle=True, num_workers=2)

我用DataLoader包装了数据集,到目前为止没有任何错误。当我将数据传递到网络时,错误会增加。

for epoch in range(1):
for data, label in test_data:
    print(data.dtype)
    print(label.dtype)
    with autograd.record():
        output = net(data)
        loss = softmax_cross_entropy(output, label)
    loss.backward()
    trainer.step(batch_size)

net(data)中的错误上升,并且错误消息如下所示。

MXNetError: [07:53:55] src/operator/contrib/../elemwise_op_common.h:135: Check failed: assign(&dattr, vec.at(i)): Incompatible attr in node  at 1-th input: expected float64, got float32
Stack trace:
  [bt] (0) /root/anaconda3/lib/python3.7/site-packages/mxnet/libmxnet.so(+0x4b09db) 
[0x7f00f96519db] ...

当我打印数据和标签的类型时,它们都是float64,但是MXNet告诉我数据的数据类型是float32。有人可以解释为什么会这样吗?在此先感谢。

奥利维尔·克鲁奇特(Olivier Cruchant)

您的网络位于float64还是float32?尝试将权重转换为float64:

net = net.cast('float64')

话虽如此,以我的经验,在float64中训练DL模型并不常见,float32和float16在训练中更为常见。MXNet使您可以轻松地使用float16精度进行显式训练,或者使用AMP工具自动进行训练(自动混合精度)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将numpy数组类型和值从Float64转换为Float32

TensorFlow TypeError:传递给参数输入的值的数据类型为uint8不在允许值列表中:float16,float32

如何修复MatMul Op的float64类型与float32 TypeError类型不匹配?

MySQL插入Float32和Float64 Go

Golang浮点精度float32 vs float64

attr'T'的数据类型float32不在允许值列表中:int32,int64

skimage.transform.rescale将数据类型从uint8更改为float64

将float32数据类型的numpy数组转换为十六进制格式

Float32(Float的别名)和Float64(Double的别名)有什么作用?

TypeError:传递给参数'indices'的值的数据类型float32不在允许的值列表中:int32,int64

cython float64错误,尽管专门设置了float32

我如何将数据类型更改为float64,以便sklearn可以在数据大于np.float32的数据帧上工作

MemoryError:无法分配形状(118、840983)和数据类型float64的数组

Pandas:ValueError(将Sparse [float64,0.0] dtypes转换为float64数据类型的任何方法)

Tensorflow数据类型应为整数而不是float64

MemoryError:无法为形状(1122、1122、12288)和数据类型float64的数组分配115。GiB

MemoryError:无法为形状为(287318,3704243)和数据类型float64的数组分配7.74 TiB

MemoryError:无法为形状(725000、277、76)和数据类型float64的数组分配30.4 GiB

将数据框数据类型从对象转换为float64时出现问题

整数类型float32 vs float64中的错误

从Float64到Float32

Numpy 将 float32 转换为 float64

在 Tensorflow 中为 float32 和 float64 实现新运算符时出错

'MatMul' Op 的输入 'b' 的类型 float32 与参数 'a' 的类型 float64 不匹配

类型错误:传递给参数“输入”的值的数据类型 int64 不在允许值列表中:float16、bfloat16、float32、float64

四舍五入的差异 - float64 与 float32

内存错误:无法为形状为 (3000, 4000, 3) 且数据类型为 float32 的数组分配 137. MiB

如何在 Pandas 中将所有 float64 列转换为 float32?

Onnx 推理在 streamlit 框架内使用 numpy float32 数据类型引发错误