如何一步步用Google Colaboratory训练自己的模型?

使用Google Colaboratory必须翻墙

搞深度学习就必须要使用GPU,否则训练太慢了,自己用CPU训练一个AlexNet网络,数据量大了内存不够,数据量小模型训练不够,训练时办公也还特别卡,搞了2天,结果训练准确率才到0.5,程序员吗,遇山开山遇水搭桥,于是想个办法突破自己电脑限制。

为啥选择Colab呢?有一下几个原因:

第一、自己搞的是TensorFlow(Pytorch也可以用它,后期也准备削它);

第二,最重要的免费使用GPU,提高训练模型的效率;

第三,不消耗自己电脑的pc,可以干其他事情。

第四,不用配置环境。

如果你跟我一样,也需要免费GPU来训练模型的话,那么一起Colab

登录Google云端硬盘

单击云端硬盘,用Google账号登录。界面如下:
在这里插入图片描述
单击左上角新建,得到如下的界面:
在这里插入图片描述
你可以选择上传文件或者文件夹,你可以把训练模型的数据集和配置等上传上去,上传完之后,我们在点击更多\Google Colaboratory,进入下面页面:
在这里插入图片描述
单击红色框内按钮,装载Google云端硬盘,或者运行下面代码。

from google.colab import drive
drive.mount('/content/drive')

挂载成功后,我们可以在右侧种选择content/drive/MyDrive,找到云端硬盘,见下图:
在这里插入图片描述

用GPU运行模型

Colab就是一个编辑器,其格式为.ipynb,只不过它支持了TensorFlowPytorch等深度学习框架,还提供了免费GPU,对于AI从业人员来说是福音,但是要使用TPU的话就需要Colab pro,需要付费。下面我开始构建模型和编译模型。

单击代码/新建代码单元格,开始写的自己模型。默认是CPU,若你想使用GPU,可以在代码执行程序/更改运行时类型/CPU进行设置。

下面用个简单是实例说明如何使用的:

# Simple CNN model for CIFAR-10  
import numpy  
from tensorflow.keras.datasets import cifar10  
from tensorflow.keras.layers import Conv2D  
from tensorflow.keras.layers import Dense  
from tensorflow.keras.layers import Dropout  
from tensorflow.keras.layers import Flatten  
from tensorflow.keras.layers import MaxPooling2D  
from tensorflow.keras.models import Sequential  
from tensorflow.keras.optimizers import SGD  
from tensorflow.python.keras.utils import np_utils  
  
# fix random seed for reproducibility  
seed = 7  
numpy.random.seed(seed)  
  
# load data  
(X_train, y_train), (X_test, y_test) = cifar10.load_data()  
  
# normalize inputs from 0-255 to 0.0-1.0  
X_train = X_train.astype("float32")  
X_test = X_test.astype("float32")  
X_train = X_train / 255.0  
X_test = X_test / 255.0  
  
# one hot encode outputs  
y_train = np_utils.to_categorical(y_train)  
y_test = np_utils.to_categorical(y_test)  
num_classes = y_test.shape[1]  
  
# Create the model  
model = Sequential()  
model.add(Conv2D(filters=32, kernel_size=(3, 3),  
                 input_shape=(32, 32, 3),  
                 padding="same",  
                 activation="relu"))  
model.add(Dropout(0.2))  
model.add(Conv2D(filters=32,  
                 kernel_size=(3, 3),  
                 activation="relu",  
                 padding="same"))  
model.add(MaxPooling2D(pool_size=(2, 2)))  
model.add(Flatten())  
model.add(Dense(512, activation="relu"))  
model.add(Dropout(0.5))  
model.add(Dense(num_classes, activation="softmax"))  
# Compile mode  
epochs = 25  
lrate = 0.01  
decay = lrate / epochs  
sgd = SGD(lr=lrate, momentum=0.9, decay=decay, nesterov=False)  
model.compile(loss="categorical_crossentropy", optimizer=sgd, metrics=["accuracy"])  
print(model.summary())  
  
# Fit the model  
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=epochs,  
          batch_size=32, verbose=2)  
# Final evaluation of the model  
scores = model.evaluate(X_test, y_test, verbose=0)  
print("Accuracy: %.2f%%" % (scores[1] * 100))

采用CPU训练结果如下,每步需要135ms,一个迭代需要211s

Epoch 1/25 1563/1563 - 211s - loss: 1.7122 - accuracy: 0.3809 - val_loss: 1.4475 - val_accuracy: 0.4919 - 211s/epoch - 135ms/step 

Epoch 2/25 1563/1563 - 212s - loss: 1.3752 - accuracy: 0.5056 - val_loss: 1.2571 - val_accuracy: 0.5479 - 212s/epoch - 135ms/step

接下来我们看看GPU模式下,每步耗时5ms,每个迭代耗时7s,与CPU211s相比,性能提升太多了。省下来的时间写个代码它不想吗?

Epoch 1/25 1563/1563 - 23s - loss: 1.7370 - accuracy: 0.3743 - val_loss: 1.4892 - val_accuracy: 0.4618 - 23s/epoch - 14ms/step 

Epoch 2/25 1563/1563 - 7s - loss: 1.3938 - accuracy: 0.4956 - val_loss: 1.2771 - val_accuracy: 0.5397 - 7s/epoch - 5ms/step 

Epoch 3/25 1563/1563 - 7s - loss: 1.2359 - accuracy: 0.5555 - val_loss: 1.1794 - val_accuracy: 0.5852 - 7s/epoch - 5ms/step 

Epoch 4/25 1563/1563 - 7s - loss: 1.1201 - accuracy: 0.6021 - val_loss: 1.0750 - val_accuracy: 0.6226 - 7s/epoch - 4ms/step 

Epoch 5/25 1563/1563 - 7s - loss: 1.0240 - accuracy: 0.6385 - val_loss: 1.0332 - val_accuracy: 0.6346 - 7s/epoch - 4ms/step Epoch 

6/25 1563/1563 - 7s - loss: 0.9512 - accuracy: 0.6615 - val_loss: 1.0049 - val_accuracy: 0.6417 - 7s/epoch - 4ms/step

如果你觉得有更好的工具,不妨告诉,让我也感受提升效率的快感!!!欢迎点赞,收藏!

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术人Howzit

钱不钱的无所谓,这是一种鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值