美文网首页
搭建GPU-tensorflow建立卷积神经网络

搭建GPU-tensorflow建立卷积神经网络

作者: 何同尘 | 来源:发表于2019-01-12 22:30 被阅读0次

环境准备

我先使用了之前的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
结果

回调函数

打开tensorboard 查看过程


image.png
浏览器显示结果

结论

对于卷积等图形化运算,GPU运算速度远超于CPU,大概是小时和分钟的区别。

相关文章

网友评论

      本文标题:搭建GPU-tensorflow建立卷积神经网络

      本文链接:https://www.haomeiwen.com/subject/cbkhdqtx.html