【发布时间】:2017-01-30 22:56:43
【问题描述】:
我正在尝试使用 Keras 将我的数据“流入”到神经网络中。我正在使用 .flow_from_directory 方法,这个过程很适合我。我正在使用 keras 文档中的基本示例(我正在使用 tensorflow):
ROWS = 64
COLS = 64
CHANNELS = 3
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
'train',
target_size=(64, 64),
batch_size=32,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
'../tutorial/l1/kaggle_solutions/dogs_vs_cats/valid',
target_size=(64, 64),
batch_size=1,
class_mode='binary')
from keras.models import Sequential
from keras.layers import Convolution2D
from keras.layers import Dense, Activation, Flatten, Dropout, MaxPooling2D
from keras.regularizers import l2
model = Sequential()
model.add(Convolution2D(4, 4, 4, border_mode='same', input_shape=(64, 64,3), activation='relu'))
from keras.utils.np_utils import to_categorical
from keras.optimizers import SGD, RMSprop
model.compile(loss='binary_crossentropy', optimizer=RMSprop(lr=1e-4), metrics=['accuracy'])
model.fit_generator(
train_generator,
samples_per_epoch=2500,
nb_epoch=20,
validation_data=validation_generator,
nb_val_samples=3100)
运行这个我得到以下错误:
Exception: Error when checking model target: expected convolution2d_84 to have 4 dimensions, but got array with shape (32, 1)
我折腾了很长时间,发现了以下内容——将“model.add”切换为灰度输入 model.add(Convolution2D(4, 4, 4, border_mode='same', input_shape=(64, 64,3), activation='relu')) 给了我以下错误(正如预期的那样——但似乎确认我的原始输入是正确的):
Error when checking model input: expected convolution2d_input_49 to have shape (None, 64, 64, 1) but got array with shape (32, 64, 64, 3)
所以我正在(在原始中)传递一个 32、64、64、3 的 4 维数组和原始数组,但我得到了我认为的错误 预期 (1,64,64,3) 并得到 (32,64,64,3)
当我以 32 个批次发送数据时。奇怪的是,如果我将批次设置为零(以提供 0、64、64、3 输入),我得到:
Exception: Error when checking model target: expected convolution2d_87 to have 4 dimensions, but got array with shape (0, 1)
根据文档,我无法找出将数据流入模型的正确方法——我在使用 fit_generator 时无法将批量大小传递给模型,而且看起来 batch_size(样本数)是问题。
任何帮助将不胜感激。
【问题讨论】:
标签: tensorflow keras conv-neural-network