【发布时间】:2020-12-07 05:13:32
【问题描述】:
在我的实验中,我想在 imagenet 上用 cifar10 训练卷积神经网络 (CNN),我使用了ResNet50。由于 cifar10 是 32x32x3 的图像集,而 ResNet50 使用 224x224x3。为此,我需要调整输入图像的大小以便在 imagenet 上训练 CNN。但是,我尝试在 imagenet 上训练简单的CNN:
我目前的尝试:
请看my whole implementation in this gist:
base_model = ResNet50(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
x = Conv2D(32, (3, 3))(base_model.output)
x = Activation('relu')(x)
x = MaxPooling2D(pool_size=(2,2))(x)
x = Flatten()(x)
x = Dense(256)(x)
x = Dense(10)(x)
x = Activation('softmax')(x)
outputs = x
model = models.Model(base_model.input, outputs)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=50, epochs=3, verbose=1, validation_data=(X_test, y_test))
但是这次尝试给了我ResourceExhaustedError;我之前发生过这个错误,更改batch_size 删除了错误。但是现在即使我将batch_size 更改得尽可能小,但仍然会出现错误。我想知道上面在 imagenet 上训练 CNN 的方式在我的尝试中可能不正确或有问题。
更新:
我想了解如何使用预训练的权重(即 imagenet 上的 ResNet50)来训练卷积神经网络;我不确定如何在 tensorflow 中完成这项工作。任何人都可以提供可能的可行方法来解决这个问题吗?谢谢
谁能指出我的尝试出了什么问题?在 imagenet 上使用 cifar10 训练最先进的 CNN 模型的正确方法是什么?任何人都可以在张量流中分享可能的想法或有效的方法吗?任何想法?谢谢!
【问题讨论】:
-
为 CIFAR10 训练的 ResNet 不使用 224x224 的大小,而只是 32x32,为此您需要从头开始训练网络,而不使用预训练的权重。
-
@Dr.Snoopy 我想在使用
Conv2D之前使用预训练的权重。你能分享一下可能的想法吗?谢谢
标签: python tensorflow conv-neural-network