gpt4 book ai didi

python - 如何使用预训练权重在 tensorflow 中训练卷积神经网络?

转载 作者:行者123 更新时间:2023-12-05 07:02:42 25 4
gpt4 key购买 nike

在我的实验中,我想在 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 模型的正确方法是什么?任何人都可以在 tensorflow 中分享可能的想法或有效的方法吗?任何的想法?谢谢!

最佳答案

您可能会遇到此错误,因为您正试图一次将内存 (RAM) 分配给整个数据。对于初学者,您可能正在使用 numpy arrat 来存储图像,然后将这些图像转换为 tensors。因此,您甚至在创建任何内容之前就已经拥有 2 倍的内存。最重要的是,resnet 是一个非常重的模型,因此您要尝试一次传递整个数据。这就是模型使用 batches 的原因。尝试使用 tf.data.Dataset 创建生成器 documentation或者使用非常简单的 keras.preprocessing.Image.ImageDataGenerator 类。这是非常容易使用。您可以将图像文件的地址保存在 Datarame 列中,另一列代表类并使用 .flow_from_directory。或者,如果您将图像保存在目录中,则可以使用 flow_from_directory

Checkout the documentation

关于python - 如何使用预训练权重在 tensorflow 中训练卷积神经网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63461491/

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