Tensorflow-GPU使用时笔记本电脑声音过大的问题

Tensorflow-GPU使用时声音过大的问题

因为刚开始学习tensorflow,安装的是CPU模式,通过一番努力(一个下午各类查资料安装),总算安装了Tensorflow-GPU版本,但在跑神经网络程序时(Lenet -5 神经网络,batch_size=100),发现运行一分钟多后,笔记本电脑发出滋滋响声,并且声音极大,感受要炸了的那种,应该是电脑硬件缘由,高性能电脑自动忽略。解决办法以下:(具体请看方案2,方案一没有卵用,完全解决见方案三)javascript

方案一

限制tensorflow占用GPU显存的比例,防止GPU高利用率工做
代码以下java

config = tf.ConfigProto()
# 占用GPU 50%的显存
config.gpu_options.per_process_gpu_memory_fraction =0.5
with tf.Session(config=config) as sess:

发现执行程序,电脑仍然声音极大,没法解决。
将0.5改成0.1,即占用10%的GPU
电脑仍声音极大,没法解决问题web

方案二

经过限制运行速度来限制GPU的使用,即在运行程序过程当中让电脑休眠一段时间,虽然运算速度下降了,但保护了电脑,同时实测运行速度仍然比在GPU上要快。网络

1.每feed一次,程序休眠一次

先设每次休眠时间为0.1s,svg

with tf.Session() as sess:
    init_op = tf.global_variables_initializer()  # 赋初值
    sess.run(init_op)
    #tf.train.get_checkpoint_state(checkpoint_dir,latest_filename=None)该函数表示若是断点文件夹中包含有效断点状态文件,则返回该文件。
    #参数说明:checkpoint_dir:表示存储断点文件的目录 latest_filename=None:断点文件的可选名称,默认为“checkpoint
    ckpt = tf.train.get_checkpoint_state(MODEL_SAVE_PATH)
    if ckpt and ckpt.model_checkpoint_path:
        saver.restore(sess, ckpt.model_checkpoint_path)  # 加载模型参数
    # 训练模型
    for i in range(STEPS+1):
        start = (i * BATCH_SIZE) %NUM_TRAIN
        xs,ys=load_data.get_bitch(train_data,train_label,start,BATCH_SIZE)

        _,loss_value,step,learning_rate_val=sess.run([train_op,loss,global_step,learning_rate],feed_dict={x:xs,y_:ys})
        if i % 20== 0:
            print("在训练%d次后,loss为%g,learning_rate为%g" % (step, loss_value,learning_rate_val))
            saver.save(sess,os.path.join(MODEL_SAVE_PATH,MODEL_NAME),global_step=global_step)

        time.sleep(0.1)

发现有明显效果,但运行速度约为不休眠时的一半,但比CPU要快
将0.1改成0.05,声音变大,没法接受的那种函数

2.每save一次,程序休眠一次

with tf.Session() as sess:
        init_op = tf.global_variables_initializer()  # 赋初值
        sess.run(init_op)
        #tf.train.get_checkpoint_state(checkpoint_dir,latest_filename=None)该函数表示若是断点文件夹中包含有效断点状态文件,则返回该文件。
        #参数说明:checkpoint_dir:表示存储断点文件的目录 latest_filename=None:断点文件的可选名称,默认为“checkpoint
        ckpt = tf.train.get_checkpoint_state(MODEL_SAVE_PATH)
        if ckpt and ckpt.model_checkpoint_path:
            saver.restore(sess, ckpt.model_checkpoint_path)  # 加载模型参数
        # 训练模型
        for i in range(STEPS+1):
            start = (i * BATCH_SIZE) %NUM_TRAIN
            xs,ys=load_data.get_bitch(train_data,train_label,start,BATCH_SIZE)

            _,loss_value,step,learning_rate_val=sess.run([train_op,loss,global_step,learning_rate],feed_dict={x:xs,y_:ys})
            if i % 20== 0:
                print("在训练%d次后,loss为%g,learning_rate为%g" % (step, loss_value,learning_rate_val))
                saver.save(sess,os.path.join(MODEL_SAVE_PATH,MODEL_NAME),global_step=global_step)
           	    time.sleep(2)

理论上,每feed20次休眠2s,与每feed1次休眠0.1s所休眠的时间相同,这种状况下运行发现电脑声音仍极大,与不休眠时差异不大。
既然2s仍然没法解决,更不用说2s如下的休眠时间了,而休眠2s以上还不如使用第一种方法。`性能

综上所诉,应该每feed一次,程序休眠一次,各类电脑设置时间可能不一致,这里建议0.1s

方案三

网上查的,由于涉及硬件没有尝试。
是显卡上的风扇响。
一、把显卡风扇卸下来,检查散热片是否变形,修整变形散热片;如正常,用长毛刷刷散热片,再用吹风机吹去尘土。
二、检查风扇叶片是否变形或断裂,修整变形、断裂的风扇叶片;如正常,用毛刷或绵布给风扇除尘。
三、到风扇背面中心处,揭开塑料油封,在辊轴上,上少量防冻润滑油或缝纫机油,封好。若是两面都是密封的,用钻或锥子在风扇背面中心处钻个小洞,注意只钻壳,不要伤着里边的东西,也不要把钻下来的东西掉到里面,钻好后,看到轴承,就能够上油了。背面打开后,看不轴承,那就再用上边的办法钻另外一面。
四、按原样把风扇上好,开机试用。
五、风扇磨损严重或坏了,换新风扇。学习