TensorFlow 学习笔记 - 避坑指南 Updating

TensorFlow 学习笔记 - 避坑指南

  • 1. TensorFlow 实现 Deep NN
  • 2. TensorBoard 加载 Embeddings 页 Hang 住
  • 3. Optimizer 的选择
  • 4. 根据需要弹性获取 GPU 资源

TensorFlow 实现过程中会遇到各种坑,本篇记录遇到的一些坑,笔记以指南。

1. TensorFlow 实现 Deep NN

# 建议使用如下方式,这是 TensorFlow 官方建议的方式:https://www.tensorflow.org/tutorials/recurrent
def lstm_cell():
  return tf.contrib.rnn.BasicLSTMCell(lstm_size)
stacked_lstm = tf.contrib.rnn.MultiRNNCell(
    [lstm_cell() for _ in range(number_of_layers)])
# 错误的实现方式,[gru_cell_forward] * settings.num_layers 会出现 Shape 不匹配的问题,解答 https://stackoverflow.com/questions/44615147/valueerror-trying-to-share-variable-rnn-multi-rnn-cell-cell-0-basic-lstm-cell-k

gru_cell_forward = tf.contrib.rnn.GRUCell(gru_size)
if is_training and settings.keep_prob < 1:
    gru_cell_forward = tf.contrib.rnn.DropoutWrapper(gru_cell_forward, output_keep_prob=settings.keep_prob)

cell_forward = tf.contrib.rnn.MultiRNNCell([gru_cell_forward] * settings.num_layers)

2. TensorBoard 加载 Embeddings 页 Hang 住

打开 Embeddings 页的时候,会长时间停留在 Parsing metadata 页面,原因是 tensorboard --logdir的路径和projector_config.pbtxt 路径重复
reference: https://github.com/tensorflow/tensorboard/issues/247

# projector_config.pbtxt 中的文件的内容如下:
embeddings {
    tensor_name: "embedding:0"
    metadata_path: "processed/vocab_1000.tsv"
}
# 此时如果运行 tensorboard --logdir=processed 就会出现 Hang 住的情况,修改 projector_config.pbtxt 中内容如下:
embeddings {
    tensor_name: "embedding:0"
    metadata_path: "vocab_1000.tsv"
}
# 此时,运行 tensorboard --logdir=processed

3. Optimizer 的选择

不建议选择 Adadelta,参考:https://stackoverflow.com/questions/38632536/how-to-set-parameters-of-the-adadelta-algorithm-in-tensorflow-correctly

4. 根据需要弹性获取 GPU 资源

通常,我们会设置将程序运行在某块显卡上。但是我们未必能占用完这块显卡的全部资源。通过如下代码设置 Session 的配置属性就可以了。

os.environ['CUDA_VISIBLE_DEVICES'] = '0'

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
self.sess = tf.Session(config=config)

你可能感兴趣的:(TensorFlow,学习笔记,TensorFlow,学习笔记)