model.fit()生成ERROR:ValueError:所有输入数组(x)应具有相同数量的样本

时间:2018-01-15 16:13:47

标签: python error-handling keras theano

我有一个带有多个自定义图层的keras模型。我跑的时候:

model_.compile(optimizer=rms, loss=contrastive_loss,metrics=['accuracy'])

它编译没有任何问题。 但是当我尝试使用数组列表来拟合模型时:

X = [T1,R1] + [T2, R2]
model_.fit(X, [None]*2, epochs=50, batch_size=32)

我收到错误。 它似乎是由engine \ training.pyc引起的,因为它打印出来:

C:\Tools\Anaconda2\lib\site-packages\keras\engine\training.pyc in _standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)
124     for i in range(len(names)):
125         array = arrays[i]
126         if len(array.shape) == 1:
127             array = np.expand_dims(array, 1)
128             arrays[i] = array

AttributeError: 'NoneType' object has no attribute 'shape'

也许有人可以帮忙吗?我正在使用keras 2.1.2和theano 0.9.0

编辑:

我试过了:

model_.fit(X, [np.asarray([None])]*2, epochs=50, batch_size=32, verbose=5) 

而现在我收到以下错误:

ValueError: All input arrays (x) should have the same number of samples. Got array shapes: 

然后它打印输入数组的形状。

任何想法?

1 个答案:

答案 0 :(得分:0)

我认为它会返回错误,因为Keras正在检查输入的形状。但是,列表(您正在喂食的内容)没有形状属性。尝试将它们作为数组传递:

import numpy as np
model_.fit(np.asarray(X), np.asarray([None]*2), epochs=50, batch_size=32)