gpt4 book ai didi

python - 值错误 : Negative dimension size caused by subtracting 2 from 1 for 'max_pooling2d_6/MaxPool' (op: 'MaxPool' ) with input shapes: [? ,1,1,64]

转载 作者:太空狗 更新时间:2023-10-30 02:53:33 25 4
gpt4 key购买 nike

当我将输入图像的高度和宽度保持在 362X362 以下时,出现负尺寸错误。我很惊讶,因为这个错误通常是由于错误的输入尺寸引起的。我没有找到任何数字或行和列会导致错误的原因。下面是我的代码-

batch_size = 32
num_classes = 7
epochs=50
height = 362
width = 362

train_datagen = ImageDataGenerator(
rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')

test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
'train',
target_size=(height, width),
batch_size=batch_size,
class_mode='categorical')

validation_generator = test_datagen.flow_from_directory(
'validation',
target_size=(height, width),
batch_size=batch_size,
class_mode='categorical')

base_model = InceptionV3(weights='imagenet', include_top=False, input_shape=
(height,width,3))

x = base_model.output
x = Conv2D(32, (3, 3), use_bias=True, activation='relu') (x) #line2
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Conv2D(64, (3, 3), activation='relu') (x) #line3
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Flatten()(x)
x = Dense(batch_size, activation='relu')(x) #line1
x = (Dropout(0.5))(x)
predictions = Dense(num_classes, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)

for layer in base_model.layers:
layer.trainable = False

model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=
['accuracy'])

model.fit_generator(
train_generator,
samples_per_epoch=128,
nb_epoch=epochs,
validation_data=validation_generator,
verbose=2)

for i, layer in enumerate(base_model.layers):
print(i, layer.name)

for layer in model.layers[:309]:
layer.trainable = False
for layer in model.layers[309:]:
layer.trainable = True

from keras.optimizers import SGD
model.compile(optimizer=SGD(lr=0.0001, momentum=0.9),
loss='categorical_crossentropy', metrics=['accuracy'])

model.save('my_model.h5')
model.fit_generator(
train_generator,
samples_per_epoch=512,
nb_epoch=epochs,
validation_data=validation_generator,
verbose=2)

最佳答案

替换这个:

x = MaxPooling2D(pool_size=(2, 2))(x)

用这个:

x = MaxPooling2D((2,2), padding='same')(x)

在下采样期间防止维度。

关于python - 值错误 : Negative dimension size caused by subtracting 2 from 1 for 'max_pooling2d_6/MaxPool' (op: 'MaxPool' ) with input shapes: [? ,1,1,64],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49079115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com