使用keras ConvNet

时间:2017-03-27 22:54:41

标签: keras conv-neural-network

非常感谢那些对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)

谢谢!

1 个答案:

答案 0 :(得分:1)

错误说Keras期望一个数组,但你给它一个数组列表。

改组后,试试:

X_cubes = np.array(X_cubes)
Y_labels = np.array(X_cubes)

另请注意,您正在改组XY,但仅将改组后的Y提供给Keras,将非洗牌 X。我认为这不是你想要的。