我实际上是在尝试编写Keras模型。以我的观点,keras模型需要一个np.arrays列表作为x(或一个Numpy Array)。就我而言,x看起来像这样:
print(training.dtype)
对象
print(training.shape)
(406,)
print(training[0].dtype)
float64
print(training[0].shape)
(5140,5)
这是我的火车数据(x)的大小。如果我想训练模型,则会出现此错误:
返回数组(a,dtype,copy = False,order = order)
ValueError:设置具有序列的数组元素。
这就是为什么我认为我准备的数据错误。如果要将.astype转换为float32,则会收到相同的错误。
感谢您的帮助!
答案 0 :(得分:1)
问题没有改变类型。问题在于批处理样本的大小不相同,因此无法创建np阵列。您可以通过使用注释中提到的填充来解决此问题。看看keras pad_sequences
What does Keras.io.preprocessing.sequence.pad_sequences do?
答案 1 :(得分:1)
如果train2
中的条目大小都不相同,则需要填充它们。由于这是需要定期进行的工作,因此Keras为此提供了一个功能:pad_sequences
一旦它们都具有相同的大小,np.array(train2)
将创建一个单个的numpy数组,您可以将其传递给model.fit()
。
根据您的型号,以这种方式添加的额外数据可能不是问题。一种常见的处理方法是Masking。使用它来生成将自动向下传递到模型的蒙版,以便忽略某些值(您通过填充添加的值)。但是请注意,并非所有图层都支持遮罩,因此这也许不是您的选择。