Resnet模型训练时间过长

我正在使用这个教程学习模型的迁移学习。从中我们可以看到他的单个epoch平均只需要1秒钟。

Epoch 1/1001080/1080 [==============================] - 10s 10ms/step - loss: 3.6862 - acc: 0.2000Epoch 2/1001080/1080 [==============================] - 1s 1ms/step - loss: 3.0746 - acc: 0.2574Epoch 3/1001080/1080 [==============================] - 1s 1ms/step - loss: 2.6839 - acc: 0.3185Epoch 4/1001080/1080 [==============================] - 1s 1ms/step - loss: 2.3929 - acc: 0.3583Epoch 5/1001080/1080 [==============================] - 1s 1ms/step - loss: 2.1382 - acc: 0.3870Epoch 6/1001080/1080 [==============================] - 1s 1ms/step - loss: 1.7810 - acc: 0.4593

但是当我为我的cifar模型使用几乎相同的代码时,我的单个epoch运行大约需要1小时。

Train on 50000 samples 3744/50000 [=>............................] - ETA: 43:38 - loss: 3.3223 - acc: 0.17601

我的代码如下

from tensorflow.keras.applications import ResNet50from tensorflow.keras.layers import GlobalAveragePooling2D, Dense, Dropoutfrom tensorflow.keras import Model(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()x_train = x_train / 255.0x_test = x_test / 255.0y_train = to_categorical(y_train)y_test = to_categorical(y_test)base_model = ResNet50(weights= None, include_top=False, input_shape= (32,32,3))x = base_model.outputx = GlobalAveragePooling2D()(x)x = Dropout(0.4)(x)predictions = Dense(10 , activation= 'softmax')(x)model = Model(inputs = base_model.input, outputs = predictions)model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])hist = model.fit(x_train, y_train)

请注意,我在这个模型中使用的是cifar 10数据集。我的代码或数据有什么问题吗?我该如何改进?一个epoch需要1小时实在是太长了。我还有NVIDIA MX-110 2GB,TensorFlow当然是在使用它。


回答:

我复制并运行了你的代码,为了让它运行,我不得不进行以下修改

根据model.fit的文档,如果你没有指定批量大小,默认值为32。所以对于50,000个样本/32=1563步。不知为何在你的代码中批量大小默认设置为1。我不知道为什么。所以你可以设置batch_size=50,这样你将需要1000步。为了进一步加速,我会设置weights=”imagenet”并冻结基础模型中的层,如下所示

for layer in base_model.layers:    layer.trainable = False#if you set batch_size=50, weights="imagenet" with the base model frozen you get50000Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/resnet/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h594773248/94765736 [==============================] - 5s 0us/stepEpoch 1/21000/1000 [==============================] - 16s 16ms/step - loss: 2.5101 - acc: 0.1487Epoch 2/21000/1000 [==============================] - 10s 10ms/step - loss: 2.1159 - acc: 0.2249

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注