python - 如何在 keras/tensorflow 中为 cnn 模型提供不同尺寸的图像
问题描述
我对如何输入两张尺寸的图片感到困惑,它也不能使用调整大小和裁剪。我已经看到了这个问题,但也没有解决。这是我的代码,但我收到以下错误:
StopIteration:“NoneType”对象不能解释为整数
我希望你能给我一些建议
model = Sequential()
model.add(Conv2D(filters=6,kernel_size=(5,5),padding='same',input_shape=(None,None,3)))
model.add(Activation('tanh'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(filters=16,kernel_size=(5,5),padding='same'))
model.add(Activation('tanh'))
model.add(GlobalAveragePooling2D())
model.add(Dense(1))
model.add(Activation('sigmoid'))
#sgd = optimizers.RMSprop(lr=0.01, clipvalue=0.5)
model.compile(loss='binary_crossentropy',#'binary_crossentropy'categorical_crossentropy,
optimizer='sgd',
metrics=['accuracy'],
)
train_datagen = ImageDataGenerator(rescale=1./255,
vertical_flip=True,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='binary')#'binary'categorical)
validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='binary')#'binary')
early_stopping = EarlyStopping(monitor='val_acc',patience=10,mode='max')
model.fit_generator(train_generator,
steps_per_epoch=nb_train_samples//batch_size,
epochs=nb_epoch,
validation_data=validation_generator,
validation_steps=nb_validation_samples,
callbacks=[early_stopping,
TensorBoard(log_dir='C:\\Users\\ccri\\Desktop\\new\\iou30\\426\\lenet\\log', write_images=True),
ModelCheckpoint(filepath='C:\\Users\\ccri\\Desktop\\new\\iou30\\426\\lenet\\canshu\\weights.{epoch:02d}-{val_loss:.2f}.h5',
monitor='val_acc',
save_best_only=True,
mode='auto')]
)
解决方案
唯一的限制是创建一个可以适应不同大小图像的 numpy 数组。
您可以使用任何一种来解决这个问题batch_size=1
(那么您的 numpy 数组将永远不兼容)。
或者您可以尝试手动将所有相同大小的图像分组到一个数组中,将该数组训练为一个大批量,然后对其他大小执行相同操作。
推荐阅读
- javascript - 未定义不是函数字体。默认错误博览会
- spring - 我可以从多个 webfilters 中使用多个 beforeCommit 以及如何控制执行顺序?
- javascript - 无法在 firebase 中检索对象的存储 url
- datetime - 如何发送一组 GATT 特征的 Datetime?
- rabbitmq - RPC 模式下的 Spring AMQP 与断开连接的客户端
- reactjs - 使用 react-slick 更改当前幻灯片
- java - 使用 Java 流按字段和嵌套对象的字段对对象进行分组
- oracle-apex-20.1 - oracle apex 对图表上的数据进行排序,并在基础查询中使用自定义排序
- javascript - 如何在滚动 ant design table 时修复表格行
- c++ - 使用 clang libtooling 重写 C++ 源代码以包含隐式定义的构造函数、运算符和析构函数