非常感谢那些对keras有经验的人。这是我的第一个牛仔竞技表演,而野马正在大声喧哗!
我预先处理了肺部图像并提取了48x48x48mm立方体阵列,代表感兴趣区域的像素(dtype = uint8)。我已将这些8504多维数据集存储在* .npy文件中。
当我将多维数据集列表作为训练数据传递给模型时,我遇到以下错误:
"检查模型输入时出错:您传递给模型的Numpy数组列表不是模型预期的大小。预计会看到1个阵列,但却获得了以下8504阵列列表"。
我可能做错了什么?
相关代码:
# input layer of model
c3d_model.add(Convolution3D(64, 8,8,8, activation='relu', border_mode='same',
name='conv1', input_shape=(48, 48, 48, 1)))
# other layers ....
# get_data()
cubes = [np.load(os.path.join(CUBES_DIR, cubefile)) for cubefile in cubefiles] # cubefiles is a list of 8504 filenames
# shuffle data and labels to avoid skewing the training
ix = [i for i in range(len(labels))]
shuffle(ix)
X_cubes = [cubes[i] for i in ix]
Y_labels = [labels[i] for i in ix]
# and here's where I run aground
model.fit(cubes, Y_labels, validation_split=0.30, nb_epoch=1, batch_size=32, callbacks=[save_weights], verbose=2)
谢谢!
答案 0 :(得分:1)
错误说Keras期望一个数组,但你给它一个数组列表。
改组后,试试:
X_cubes = np.array(X_cubes)
Y_labels = np.array(X_cubes)
另请注意,您正在改组X
和Y
,但仅将改组后的Y
提供给Keras,将非洗牌 X
。我认为这不是你想要的。