Deep learning框架使用tips
Tensorflow
1 | tf.add_n(): a list of tensors add |
tf.train.batch(): 把数据分成一个一个的batch, 每个batch 中有batch_size 个数据
tf.name_scope() and tf.Variable_scope() 差不多,但是name_scope 对于tf.get_variable() 没影响。 这些都是用来方便管理的。可以在tensor board 可视化的时候更有帮助。
RNN中用的多的:
tf.clip_by_global_norm:用于控制梯度下降的参数。把梯度值控制在一个合理的范围内。
tensorflow GPU on server
指定GPU 一开始:
CUDA_VISIBLE_DEVICES=1 python test.py
安装指南:
~/.bashrc 里面的东西
#cuda settings
export PATH=$HOME/cuda-8.0/bin:$PATH
export CPATH=$HOME/cuda-8.0/include:$CPATH
export LIBRARY_PATH=$HOME/cuda-8.0/lib64:$LIBRARY_PATH
export LD_LIBRARY_PATH=/$HOME/cuda-8.0/lib64:$LD_LIBRARY_PATH
dataset + estimator 以后把所有的输入部分转化成dataset 的模式。 estimator 是一个高层封装,可以调用一些基本方法。
install from server
install tensorflow in Saturn (ILS server)
Saturn 的server是Red Hat 的,所以参考https://jiafulow.github.io/blog/2018/07/10/install-tensorflow-with-gpu-on-redhat/ 来安装Tensorflow-GPU.
For Ubuntu server,
为了run python 3.6 + tensorflow GPU version in ILS saturn server, 具体步骤:
一 准备工作:
- 安装anaconda 3。在.bashrc 里面加入
PATH=/home/gao27/anaconda/bin:$PATH - 确定你的Python version 3.6
二 安装cuda 和 cudnn
- 因为我们没有权限在cuda里面直接安装,所以我们首先通过which nvcc 找到cuda 包的所在地,然后把cuda整个包都拷贝到一个我们有权限操作的地方。 cuda版本需要8.0
- 下载cudnn 5.1 版本,解压后会有两个文件夹lib64 和 include。 把里面的文件对应加到cuda对应的lib64 和 include里面 (不同版本的tensorflow 对应不同的cudnn. tensorflow 1.4 对应6.0. )
- 在.bashrc 里面加入如下路径
#cuda settings
export PATH=$HOME/cuda/bin:$PATH
export CPATH=$HOME/cuda/include:$CPATH
export LIBRARY_PATH=$HOME/cuda/lib64:$LIBRARY_PATH
export LD_LIBRARY_PATH=/$HOME/cuda/lib64:$LD_LIBRARY_PATH
最后要source ~/.bashrc
三 安装tensorflow GPU 版本通过Anaconda
如图:
网址如下:https://www.tensorflow.org/versions/r1.2/install/install_linux#python_36
然后activate tensorflow之后检验是否安装成功:
Python
import tensorflow as tf
hello = tf.constant(‘Hello, TensorFlow!’)
sess = tf.Session()
print(sess.run(hello))
https://blog.csdn.net/u014797226/article/details/80229887
https://blog.ailemon.me/2017/06/06/install-tensorflow-gpu-on-ubuntu-linux/
https://blog.csdn.net/u014797226/article/details/80229887
炼丹trick
为什么loss 或者学习的参数 在summary 中会出现nan?
可能是由于梯度爆炸引起的。解决方法:1. gradient clip 2. batch nomalization 3, 降低学习率 4. 加入正则。
如果你想查看ckpt中的网络结构和参数该怎么弄呢?这里提供2种方法。 一是用tensorflow官方源码中自带的inspect_checkpoint.py 给个例子如下: python /usr/local/lib/python2.7/dist-packages/tensorflow/python/tools/inspect_checkpoint.py --file_name=model.ckpt-158940 --tensor_name=unit_1_1/conv1/Weights 如果你只用了file_name这个参数,那么看到的就是整体网络结构。如果你2个参数都用了,那看到的就是具体那一层的值
activate tensorflow:
source ~/Documents/tensorflow/bin/activate
deactivate tensorflow:
deactivate
Pytorch
参考文献: