Windows中的Tensorflow的gpu使用率较低

时间:2019-03-03 12:01:20

标签: python windows tensorflow gpu

我最近为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使用率:

gpu usage

CPU使用率:

cpu usage

我使用了62.8mb的“ train-imgs.npz”文件和160kb的“ train-labels.npz”文件。 如上图所示,gpu利用率会波动并且不会超过90%。我认为由于GPU使用率低,我在GPU上运行代码时培训步骤仍然很低。

但是,当我运行需要更复杂计算的cnn代码时,我的笔记本电脑始终使用60%以上的GPU。 我知道GPU的使用取决于网络大小,批处理大小和预处理。为了使GPU使用率持续提高90%以上,我应该怎么做?

0 个答案:

没有答案