我最近为Windows 10安装了tensorflow-gpu,然后按照所有步骤进行操作,包括CUDA 9.0和cudadnn。但是运行代码后,计算速度并没有显着提高。
import numpy as np
import tensorflow as tf
tf.set_random_seed(777)
origin_data=np.load("train-imgs.npz")['arr_0']
answer_data=np.load("train-labels.npz")['arr_0']
d2_origin_data,answer_2d=[],[]
for i in range(len(origin_data)):
d2_origin_data.append(origin_data[i].flatten())
answer_data=np.reshape(answer_data,(-1,1))
num_classes=10
input_feed=tf.placeholder(tf.float32,[None,len(d2_origin_data[0])])
answer_feed=tf.placeholder(tf.int32,[None,1])
w=tf.Variable(tf.random_normal([len(d2_origin_data[0]),num_classes]))
b=tf.Variable(tf.random_normal([num_classes]))
with tf.device('/gpu:1'):
our_answer=tf.nn.softmax(tf.matmul(input_feed,w*0.001)+b)
vec_answer=tf.one_hot(answer_feed,num_classes)
vec_answer=tf.reshape(vec_answer,[-1,num_classes]) #reduce dimension
cost=tf.reduce_meantf.reduce_sum(vec_answer*tf.log(our_answer),axis=1))
train=tf.train.AdamOptimizer(learning_rate=0.1).minimize(cost)
sess = tf.Session(config=tf.ConfigProto( allow_soft_placement=True, log_device_placement=True))
sess.run(tf.global_variables_initializer())
for i in range(1000):
cost_val,acc,_=sess.run([cost,accuracy,train],feed_dict{input_feed:d2_origin_data,answer_feed:answer_data})
if i%50==0:
print(i,acc,cost_val)
GPU使用率:
CPU使用率:
我使用了62.8mb的“ train-imgs.npz”文件和160kb的“ train-labels.npz”文件。 如上图所示,gpu利用率会波动并且不会超过90%。我认为由于GPU使用率低,我在GPU上运行代码时培训步骤仍然很低。
但是,当我运行需要更复杂计算的cnn代码时,我的笔记本电脑始终使用60%以上的GPU。 我知道GPU的使用取决于网络大小,批处理大小和预处理。为了使GPU使用率持续提高90%以上,我应该怎么做?