在我的实验中,我想使用cifar10数据集中的图像训练卷积神经网络(CNN)在imagenet数据集上,并使用了ResNet50模型。由于cifar10数据集中的图像大小为32x32x3,而ResNet50模型所需的输入大小为224x224x3。因此,我需要调整输入图像的大小以便在imagenet上训练CNN。然而,我尝试在imagenet上训练简单的CNN时遇到了以下问题:
我当前的尝试:
请参见此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中实现这一点。有人能提供可能可行的方法吗?谢谢。
有人能指出我的尝试何去错了吗?使用cifar10在imagenet上训练最先进的CNN
模型的正确方式是什么?有人能分享在tensorflow中做到这一点的可能思路或高效方法吗?任何想法?谢谢!
Conv2D
之前使用预训练的权重。你能分享一些可能的想法吗?谢谢。 - kim