windows下CPU与GPU机器学习性能对比测试
admin 于 2017年12月05日 发表在 机器学习笔记
GPU和CPU进行深度学习的性能,虽然之前已经有过对比(《机器学习—Nvidia GPU平台选型》),但对于具体型号来说,相差到底有多大?此文笔者介绍自己电脑的测试过程。
个人电脑配置信息如下:
1. 测试方法
通过对CPU和GPU下机器学习性能进行单独测试,例程采用TensorLayer实现。
(1)安装方法参考:《Win7下cuda8.0深度学习开发平台》
(2)安装winpython,直接在Spyder IDE中进行编程。
2. 运行例程
通过一个简单的例程MNIST,对两种平台运算的时间进行对比。详细内容访问官网地址。
例程源码:
import tensorflow as tf import tensorlayer as tl sess = tf.InteractiveSession() # 准备数据 X_train, y_train, X_val, y_val, X_test, y_test = \ tl.files.load_mnist_dataset(shape=(-1,784)) # 定义 placeholder x = tf.placeholder(tf.float32, shape=[None, 784], name='x') y_ = tf.placeholder(tf.int64, shape=[None, ], name='y_') # 定义模型 network = tl.layers.InputLayer(x, name='input_layer') network = tl.layers.DropoutLayer(network, keep=0.8, name='drop1') network = tl.layers.DenseLayer(network, n_units=800, act = tf.nn.relu, name='relu1') network = tl.layers.DropoutLayer(network, keep=0.5, name='drop2') network = tl.layers.DenseLayer(network, n_units=800, act = tf.nn.relu, name='relu2') network = tl.layers.DropoutLayer(network, keep=0.5, name='drop3') network = tl.layers.DenseLayer(network, n_units=10, act = tf.identity, name='output_layer') # 定义损失函数和衡量指标 # tl.cost.cross_entropy 在内部使用 tf.nn.sparse_softmax_cross_entropy_with_logits() 实现 softmax y = network.outputs cost = tl.cost.cross_entropy(y, y_, name = 'cost') correct_prediction = tf.equal(tf.argmax(y, 1), y_) acc = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) y_op = tf.argmax(tf.nn.softmax(y), 1) # 定义 optimizer train_params = network.all_params train_op = tf.train.AdamOptimizer(learning_rate=0.0001, beta1=0.9, beta2=0.999, epsilon=1e-08, use_locking=False).minimize(cost, var_list=train_params) # 初始化 session 中的所有参数 tl.layers.initialize_global_variables(sess) # 列出模型信息 network.print_params() network.print_layers() # 训练模型 tl.utils.fit(sess, network, train_op, cost, X_train, y_train, x, y_, acc=acc, batch_size=500, n_epoch=500, print_freq=5, X_val=X_val, y_val=y_val, eval_train=False) # 评估模型 tl.utils.test(sess, network, acc, X_test, y_test, x, y_, batch_size=None, cost=cost) # 把模型保存成 .npz 文件 tl.files.save_npz(network.all_params , name='model.npz') sess.close()
3. 时间对比
(1)在i5-3470上运行,系统信息和运算消耗的时间,如下图:
(2)在GTX1060上运行,系统信息和运算消耗的时间,如下图:
通过对比发现:
GPU GTX1060进行深度学习的性能是CPU I5-3470的10倍左右。
注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。
标签:机器学习