我不知道如何输入两个大小的图片,它也不能使用resize和crop。我见过这个question,但它也没有解决了。这个是我的代码,但我收到以下错误:
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数组就永远不会不兼容)。在或者您可以尝试手动将相同大小的所有图像分组到一个数组中,将该数组训练为一个大批量,然后对其他大小的图像执行相同的操作。在
恐怕那是不可能的。如何更新权重矩阵?在
假设您将其初始化为
2x2
矩阵:假设一旦您对一些}将去哪里?左上角?中间?右上角?你会生成一个新的吗?这会让所有的训练过程都付诸东流。在
2x2
图像进行了培训,那么您将希望对4x4
图像进行培训。会是什么样子?元素a
、b
、c
和{我真的建议重新调整所有图片的宽度和高度。如果这是不可能的,并且每个宽度和高度都有大量的例子,你可以简单地创建几个神经网络(N1,N2,…),并且,理论上,一旦你到达一个与输入图像无关的形状相同的层,就切换到一个共享的神经网络。但是,您需要从每个类别中获取大量的示例。在
相关问题 更多 >
编程相关推荐