将input_shape
设置为(286,384,1)。现在,模型需要一个4维的输入。这意味着您必须使用.reshape(n_images, 286, 384, 1)
重塑图像。现在,您添加了一个额外的维度,而无需更改数据,并且模型可以运行了。基本上,您需要将数据调整为( n_images
, x_shape
, y_shape
, channels
)。
很棒的事情是您还可以使用RGB图像作为输入。只需将channels
更改为3。
还要检查以下答案: Keras输入说明:input_shape,units,batch_size,dim等
例
import numpy as np
from keras.models import Sequential
from keras.layers.convolutional import Convolution2D
from keras.layers.core import Flatten, Dense, Activation
from keras.utils import np_utils
#Create model
model = Sequential()
model.add(Convolution2D(32, kernel_size=(3, 3), activation='relu', input_shape=(286,384,1)))
model.add(Flatten())
model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
#Create random data
n_images=100
data = np.random.randint(0,2,n_images*286*384)
labels = np.random.randint(0,2,n_images)
labels = np_utils.to_categorical(list(labels))
#add dimension to images
data = data.reshape(n_images,286,384,1)
#Fit model
model.fit(data, labels, verbose=1)
0
我正在从多个384x286黑白图像中手动创建数据集。
我加载这样的图像:
这导致x是一个数组(num_samples,286、384)
阅读keras文档并检查我的后端,我应该向卷积步骤提供一个由(rows,cols,channels)组成的input_shape
由于我不随意知道样本大小,因此我希望将其作为输入大小传递,类似于
该模型的构建如下:
作为input_shape(286、384、1)传递会导致:
传递as_input_shape(None,286,384,1)会导致:
我究竟做错了什么 ?我该如何重塑输入数组?