ValueError: setting an array element with a sequence. On Keras model.fit
ValueError: setting an array element with a sequence. On Keras model.fit
我在 keras "ValueError: setting an array element with a sequence" model.fit
model.fit(X_tr, np.array(y_tr), batch_size=32, epochs=5, validation_split=0.1, verbose=1)
X_tr
Out[22]:
array([[4256, 1244, 4475, ..., 8766, 8766, 8766],
[5443, 3401, 4709, ..., 8766, 8766, 8766],
[3829, 543, 681, ..., 8766, 8766, 8766],
...,
[2185, 7510, 8004, ..., 8766, 8766, 8766],
[7562, 5842, 4742, ..., 8766, 8766, 8766],
[2449, 6217, 2310, ..., 8766, 8766, 8766]], dtype=int32)
X_tr.shape
(2699, 75)
np.array(y_tr)
Out[37]:
array([array([[0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0.],
[0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
0.],
...,
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.,
0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
0.]], dtype=float32)], dtype=object)
np.array(y_tr).shape
(2699,)
我很困惑,谁能帮帮我?提前致谢!
如果您需要代码:https://github.com/sunsuntianyi/question/blob/master/LSTM.ipynb
错误肯定源于您传入对象数组作为预测变量。据我从您的代码片段中可以看出,您的 y_tr
应该是形状 (2699,17) 。也许 y_tr
中的某些行的长度不是 17,或者您可能专门使用对象数组来生成数据。如果是后者,你可以试试这样转换回来:
y_tr = np.asarray([np.asarray(row, dtype=float) for row in y_tr], dtype=float)
将 float
替换为适合您需要的任何类型。如果行的大小也不同,这应该会出错。
我在 keras "ValueError: setting an array element with a sequence" model.fit
model.fit(X_tr, np.array(y_tr), batch_size=32, epochs=5, validation_split=0.1, verbose=1)
X_tr
Out[22]:
array([[4256, 1244, 4475, ..., 8766, 8766, 8766],
[5443, 3401, 4709, ..., 8766, 8766, 8766],
[3829, 543, 681, ..., 8766, 8766, 8766],
...,
[2185, 7510, 8004, ..., 8766, 8766, 8766],
[7562, 5842, 4742, ..., 8766, 8766, 8766],
[2449, 6217, 2310, ..., 8766, 8766, 8766]], dtype=int32)
X_tr.shape
(2699, 75)
np.array(y_tr)
Out[37]:
array([array([[0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0.],
[0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
0.],
...,
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.,
0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
0.]], dtype=float32)], dtype=object)
np.array(y_tr).shape
(2699,)
我很困惑,谁能帮帮我?提前致谢!
如果您需要代码:https://github.com/sunsuntianyi/question/blob/master/LSTM.ipynb
错误肯定源于您传入对象数组作为预测变量。据我从您的代码片段中可以看出,您的 y_tr
应该是形状 (2699,17) 。也许 y_tr
中的某些行的长度不是 17,或者您可能专门使用对象数组来生成数据。如果是后者,你可以试试这样转换回来:
y_tr = np.asarray([np.asarray(row, dtype=float) for row in y_tr], dtype=float)
将 float
替换为适合您需要的任何类型。如果行的大小也不同,这应该会出错。