TensorFlow(3)-与训练相关的操作

0 gpu版本的tensor flow安装

cuda10.2

conda create -n py27 python=2.7
conda activate py27
pip install tensorflow==1.14.0

验证 gpu版本的tensor可用

import tensorflow as tf
print(tf.test.is_gpu_available()) # true 为可用

报错1: Could not dlopen library ‘libcudart.so.10.0’; dlerror: libcudart.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-11.2/lib64:
解决:安装cudatoolkit

conda install cudatoolkit=10.0

报错1: Could not dlopen library ‘libcudnn.so.7’; dlerror: libcudnn.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-11.2/lib64
解决:安装cudnn=7.6.5

conda install cudnn=7.6.5

如果你的模型训练出不了效果,可能的原因太多了,没搞清tf 中各个函数的具体作用可能就是其中一个原因。本文记录【如果不理清,会造成无法解释的训练现象的操作】。

1. tf.control_dependencies(update_ops)

  1. tf.control_dependencies()–保证其作用域内的操作必须要在该函数所传递的参数中的操作完成后再进行。 如下Code Demo,只有在update_ops 操作完成后,才会执行optimizer.minimize(loss)。
  2. tf.GraphKeys.UPDATE_OPS–tensorflow计算图中内置的一个集合,通过 tf.get_collection获取这个集合。其中会保存一些需要在训练操作之前完成的操作。例如: batch normalization 均值和方差的更新。

Code Demo

  update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
  with tf.control_dependencies(update_ops):
    train_op = optimizer.minimize(loss)

参考文献:
1.tensorflow中的batch_norm以及tf.control_dependencies和tf.GraphKeys.UPDATE_OPS的探究
2.tf.get_collection(tf.GraphKeys.UPDATE_OPS)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值