与训练相关的操作
- 0 gpu版本的tensor flow安装
- 1. tf.control_dependencies(update_ops)
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)
- tf.control_dependencies()–保证其作用域内的操作必须要在该函数所传递的参数中的操作完成后再进行。 如下Code Demo,只有在update_ops 操作完成后,才会执行optimizer.minimize(loss)。
- 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)