首页 > 解决方案 > 如何将“对象”的 dtype 更改为 float32?

问题描述

我实际上是在尝试编写 Keras 模型。在我看来,keras 模型需要一个 np.arrays 列表作为 x (或 Numpy 数组)。在我的情况下 x 看起来像这样:

print(training.dtype)

目的

print(training.shape)

(406,)

print(training[0].dtype)

浮动64

print(training[0].shape)

(5140, 5)

这是我的训练数据 (x) 的大小。如果我想训练模型,我会收到此错误:

返回数组(a,dtype,copy=False,order=order)

ValueError:使用序列设置数组元素。

这就是为什么我认为,我准备的数据是错误的。如果我想用 .astype 将它们转换为 float32,我会得到同样的错误。

谢谢你的帮助!

标签: pythonnumpytensorflowkeras

解决方案


如果中的条目train2大小不同,则需要填充它们。由于这是需要定期完成的事情,Keras 为此提供了一个功能:pad_sequences

一旦它们都具有相同的大小,np.array(train2)将创建一个可以传递给的单个 numpy 数组model.fit()

根据您的型号,您以这种方式添加的额外数据可能会或可能不会成为问题。处理此问题的常用方法是Masking。使用它来生成一个掩码,该掩码将自动传递给模型,以便忽略某些值(您通过填充添加的值)。但是请注意,并非所有图层都支持遮罩,因此这可能不适合您。


推荐阅读