我正致力于将图像输送到3D卷积网络。图像是704 x 11 x 3图像,我收到以下错误。列车图像的数量是72000,CNN的输入形状是(704,11,3,1)
。
ValueError:检查输入时出错:期望conv3d_1_input具有形状(704,11,3,1)但是具有形状的数组(72000,704,11,3)
以下是我在keras中编写的用于提供给网络的代码。
x = cv2.imread(image_path)
print (x.shape)
x = np.reshape(x,(1, num_features))
data_x.append(x)
...
# After splitting to train and validation and test
...
train_x = data['train_x']
test_x = data['test_x']
validate_x = data['validate_x']
#Convert into float and normalize
train_x = train_x.astype('float32')
test_x = test_x.astype('float32')
validate_x = validate_x.astype('float32')
train_x = train_x.reshape(train_x.shape[0], 704, 11, 3).astype('float32')
test_x = test_x.reshape(test_x.shape[0], 704, 11, 3).astype('float32')
validate_x = validate_x.reshape(validate_x.shape[0], 704, 11, 3).astype('float32')
train_x = train_x/255
test_x = test_x/255
validate_x = validate_x/255
data['train_x'] = train_x
data['test_x'] = test_x
data['validate_x'] = validate_x
...
train_x = np.expand_dims(train_x, axis=0)
validate_x = np.expand_dims(validate_x, axis=0)
test_x = np.expand_dims(test_x, axis=0)
...
model = Sequential()
model.add(Conv3D(8, kernel_size = (3,3,3),data_format="channels_last",
activation = 'linear', input_shape=(704,11,3,1), padding='same'))
....
答案 0 :(得分:0)
尝试更改axis
:
# makes train_x: (?, 704, 11, 3, 1)
train_x = np.expand_dims(train_x, axis=-1)
...
同样根据错误消息,train_x
尚未实际重新整形,因此请仔细检查是否实际调用了此操作。