环境准备
我先使用了之前的cpu版keras搭建,结果有一些错误,于是我就新建了一个虚拟环境
conda create --name tensorflow-gpu python=3.6
这部分,都是参考的网上的内容,就不贴了。
下载cuda,用来gpu支持科学运算。
下载cuDNN,tensorflow调用cuda的函数库支持。
添加cuDNN的bin目录到系统路径(cuda安装时自动添加)
安装
pip install tensorflow-gpu
测试
import tensorflow as tf
sess = tf.Session();
若不报错,即成功.
实例
参考之前的cpu版CNN卷积训练。得到序列化文件。
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Dropout,Activation,Flatten,Conv2D,MaxPooling2D
import pickle
from tensorflow.keras.callbacks import TensorBoard
import time
NAME = "Cats-vs-dog-cnn-64x2-{}".format(int(time.time()))
tensorboard = TensorBoard(log_dir='logs/{}'.format(NAME))
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
X = pickle.load(open('X.pickle','rb'))
y = pickle.load(open('y.pickle','rb'))
X = X/255.0
model = Sequential()
model.add(Conv2D(64,(3,3),input_shape = X.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(64,(3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss = 'binary_crossentropy',
optimizer = 'adam',
metrics= ['accuracy'])
model.fit(X,y,batch_size=32,epochs=10,validation_split=0.3,callbacks=[tensorboard])
python test.py
![](https://img.haomeiwen.com/i14391893/47a6778f4e4d774b.png)
回调函数
打开tensorboard 查看过程
![](https://img.haomeiwen.com/i14391893/15e9e97756a3c5fd.png)
![](https://img.haomeiwen.com/i14391893/e5f643fba8a4af38.png)
结论
对于卷积等图形化运算,GPU运算速度远超于CPU,大概是小时和分钟的区别。
网友评论