1. 我的机器配置(穷学生的攒机之旅)
1.1 机器的来源
在上个月,我在闲鱼上疯狂捡漏,最终淘了一个800块的主机(后配了一块惠普500G的SSD,价格370)以及760的显示器,自己氪金(这能叫氪金???)在创新区整了一套我觉得蛮不错的生产力工具,总共花费大概是2000左右,比我5000的笔记本使用体验好多了(笔记本的屏幕还坏掉了哭唧唧)。由于现在大三了,这些机器我是绝对不舍得丢掉的,读到研究生估计也会拎着一起走,为了啥呢,还不是因为穷。
1.2 机器的配置
先上两个设备的配置:
主机的配置信息我思来想去还是用了智商检测大师...配置确实是物超所值了,只是主板没有m.2的接口,我只有重买了一块hp的sata接口的ssd,装了学校KMS上的系统,整的还是蛮舒服的。跑分大家都懂的,看看就好,之前是能到15w左右的hhh(有一个问题是我这个显卡玩lol的FPS居然会在60左右不太清楚是什么问题嘤嘤嘤,之前下CUDA的时候又给我优化了设置,最近准备再试试
显示器的配置我也要吹一吹,2k分辨率 + 32大尺寸,简直幸福感Max,敲代码(你骗鬼呢)和看番啥的都很舒服呢。
2. 开始配置环境
2.1 卸载之前的tensorflow版本
首先我是先装的cpu版本的tensorflow,我使用以下命令对其进行了卸载,后面如果不是tensorflow-gpu,安装和卸载的时候都是默认cpu版本。
pip uninstall tensorflow
2.2 开始安装环境
安装gpu版本的tensorflow是需要CUDA以及CUDNN的支持的,所以我先去下载了这两个东西,给大家列一下我的各配置的版本叭,应该不会有问题,我再次贪心安装了CUDA最新版本10.1的,结果十分的凄凉还是卸载了重新装了CUDA10.0版本的,所以建议大家还是去下载LTS(长期支持)版本的一些库,毕竟相关的生态可能没有那么快更新
首先怎么看自己的显卡支持的CUDA版本呢,这里补充一点的是CUDA和CUDNN都是只支持Nvidia显卡的,A卡我没有装过,请A卡的同学自己右上角叭(劝退)。
1.桌面右键点击NVIDIA控制面板 -> 点击控制面板的左下角系统信息 -> 组件中可以看到支持的CUDA版本
我理解的是,这是GPU能够支持的最新版本的CUDA库的版本,应该是向下兼容的,所以我下载CUDA10.0才能正确运行
2.开始下载相关的库
这里我就只放链接了,安装过程中我没有出现什么问题,CUDA我选择的是NetWork版本的(就是运行exe再下载相关组件),并且我也是直接精简模式一把梭没有出现什么问题.注意cuDNN的话要注册才能下载
工具及库 | 版本 | 下载链接 |
---|---|---|
Python | 3.6.8 | https://www.python.org/downloads/ |
CUDA | cuda_10.0.130_win10_network | https://developer.nvidia.com/cuda-toolkit-archive |
cuDNN | cuDNN v7.5.1 (April 22, 2019), for CUDA 10.0 | https://developer.nvidia.com/rdp/cudnn-download |
tensorflow-gpu | 1.13.1 | pip install tensorflow-gpu(此条命令是从tuna上抓的最新版本的包) |
2.3 完成环境的配置
提醒一点,cuDNN因为是个库,所以你需要将其下的对应文件夹里面的内容挪到CUDA的库中
CUDA的文件路径一般是在“C:\Program Files\NVIDIA GPU Computing Toolkit”
(强烈建议大家使用listary,用过一次就会爱上他,使用listary的同学也可以直接搜索GPU,如下图所示)
并保证CUDA在环境变量中(安装时一般是自动添加的),你在cmd里面输入nvcc -V即可查看
将cuDNN中的bin中的文件挪到CUDA的bin中
将cuDNN中的include中的文件挪到CUDA的include中
将cuDNN中的lib中的文件挪到CUDA的lib中
2.4. 尽情愉悦的享受GPU加速的快感吧
我大概花了2个小时来完成这次的GPU版本tensorflow的环境搭建,在看到结果出来的那一刻还是挺愉悦的,赶紧跑了个keras的MNIST数据集试试水,发现大概google的colab的速度的1/3左右,时间方面比CPU版本的快了7-8倍,已经很心满意足了,希望大家也能享受到机器学习的快感,下面贴上跑MNIST的CNN的代码以及速度展示
如果没有较好GPU的同学可以去薅Google的羊毛,因为里面是使用jupyter的,所以你可能需要学习一些相关的知识,你可以在里面使用clone命令克隆你Github上面的项目并在这上面跑跑,希望大家的AI之旅玩的愉快,
Colab的传送门: https://colab.research.google.com
# 第一次使用的话首先会下载一个MNIST数据集
from keras.datasets import mnist
(train_data, train_labels), (test_data, test_labels) = mnist.load_data()
print('train_shape {} {}'.format(train_data.shape, train_labels.shape))
print('test_shape {} {}'.format(test_data.shape, test_labels.shape))
from keras import models
from keras import layers
import numpy as np
from keras.utils.np_utils import to_categorical
def model_conv():
model = models.Sequential()
model.add(
layers.Conv2D(32, (3, 3), activation='relu',
input_shape=(28, 28, 1))) # 32个3*3的卷积核
model.add(layers.MaxPooling2D(2, 2)) # 2*2 的池化
model.add(layers.Conv2D(64, (3, 3), activation='relu')) # 64个3*3的卷积核
model.add(layers.MaxPooling2D(2, 2)) # 2*2 的池化
model.add(layers.Conv2D(64, (3, 3), activation='relu')) # 64个3*3的卷积核
model.add(layers.Flatten()) # 拉伸
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
model.compile(
optimizer='rmsprop', loss='categorical_crossentropy', metrics=['acc'])
return model
if __name__ == '__main__':
x_train = train_data.reshape((60000, 28, 28, 1))
x_train = x_train.astype('float32') / 255
x_test = test_data.reshape((10000, 28, 28, 1))
x_test = x_test.astype('float32') / 255
y_train = to_categorical(train_labels)
y_test = to_categorical(test_labels)
print(x_train.shape, y_train.shape)
model = model_conv()
model.summary()
his = model.fit(
x_train, y_train, epochs=5, batch_size=64, validation_split=0.1)
loss, acc = model.evaluate(x_test, y_test)
print("loss: {}, acc: {}".format(loss, acc))
model.save("my_mnist_model.h5")
print("Model have saved! ")