【发布时间】:2021-07-18 06:42:30
【问题描述】:
请帮我运行代码。这行不通。这几天我一直在努力解决这个问题。 model_final.fit() 也不起作用。为什么这显示该方法的相同错误。这几乎是整个代码。
编辑:添加了 train_generator 和 validation_generator。
img_width, img_height = 400, 400
train_data_dir = "data/train"
validation_data_dir = "data/validation"
nb_train_samples = 4125
nb_validation_samples = 466
batch_size = 16,
epochs = 5
output_num_classes = 2
K.set_image_data_format('channels_last')
model = applications.VGG19(weights="imagenet", include_top=False, input_shape=(img_width, img_height, 3))
model.summary()
x = model.output
x = Flatten()(x)
x = Dense(1024, activation="relu")(x)
x = Dropout(0.5)(x)
x = Dense(1024, activation="relu")(x)
predictions = Dense(output_num_classes, activation="softmax")(x)
model_final = Model(inputs=model.input, outputs=predictions)
model_final.compile(loss="categorical_crossentropy",
optimizer=optimizers.SGD(learning_rate=0.0001, momentum=0.9),
metrics=['accuracy'])
train_datagen = ImageDataGenerator(rescale=1./255,
zoom_range=0.3,
width_shift_range=0.3,
height_shift_range=0.3,
rotation_range=30,
horizontal_flip=True,
fill_mode='nearest')
train_generator = train_datagen.flow_from_directory(train_data_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='categorical')
validation_datagen = ImageDataGenerator(rescale=1./255,
zoom_range=0.3,
width_shift_range=0.3,
height_shift_range=0.3,
rotation_range=30,
horizontal_flip=True,
fill_mode='nearest')
validation_generator = validation_datagen.flow_from_directory(validation_data_dir,
target_size=(img_height, img_width),
batch_size = batch_size,
class_mode='categorical')
上面的代码是在拟合之前的。
model_final.fit_generator(train_generator,
steps_per_epoch=nb_train_samples,
epochs = epochs,
validation_data = validation_generator,
validation_steps = nb_validation_samples)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1844: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.
warnings.warn('`Model.fit_generator` is deprecated and '
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-87-b195f52ce8fb> in <module>()
3 epochs = epochs,
4 validation_data = validation_generator,
----> 5 validation_steps = nb_validation_samples)
/usr/local/lib/python3.7/dist-packages/keras_preprocessing/image/iterator.py in __len__(self)
66
67 def __len__(self):
---> 68 return (self.n + self.batch_size - 1) // self.batch_size # round up
69
70 def on_epoch_end(self):
TypeError: unsupported operand type(s) for +: 'int' and 'tuple' ```
【问题讨论】:
-
添加其余代码(train_generator、validation_generator)。此外,如输出中所述,您不应再使用
fit_generator(),因为它已被弃用。fit()现在支持生成器,所以请改用它。 -
那部分很好。我猜。在未来的版本中,它将被弃用。另一个问题是该功能正在运行。我将编辑代码。
-
batch_size 的值是多少?请发布计算该值的代码
-
@Dr.Snoopy 我现在上传了整个代码。你能帮我解决这个问题吗?我现在已经被困了很长时间了。你能帮忙吗?
-
批量大小定义中有一个逗号 (batch_size = 16, ),逗号不应该在那里,因为它将整数转换为一个元组。
标签: tensorflow keras conv-neural-network keras-layer