1. tf.layers.average_pooling3d
解析:average_pooling3d(inputs, pool_size, strides, padding='valid', data_format='channels_last',name=None):
Average pooling layer for 3D inputs (e.g. volumes).
(1)tf.layers.dense:Functional interface for the densely-connected layer.
(2)tf.layers.conv3d:Functional interface for the 3D convolution layer.
(3)tf.layers.max_pooling3d:Max pooling layer for 3D inputs (e.g. volumes).
(4)tf.layers.dropout:Applies Dropout to the input.
(5)tf.layers.batch_normalization:Functional interface for the batch normalization layer.
2. Bidirectional Associative Memory,BAM
解析:Bidirectional Associative Memory(BAM)。
3. IDCNN
解析:Iterated Dilated Convolution Neural Network
4. tf.GPUOptions
解析:
# 假如有12GB的显存并使用其中的4GB:
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
说明:per_process_gpu_memory_fraction指定每个GPU进程中使用显存的上限,但它只能均匀作用于所有GPU,无
法对不同GPU设置不同的上限。
5. config.gpu_options.allow_growth=True
解析:
config = tf.ConfigProto()
config.gpu_options.allow_growth=True
sess = tf.Session(config=config)
说明:当allow_growth设置为True时,分配器将不会指定所有的GPU内存,而是根据需求增长。
6. CUDA_VISIBLE_DEVICES
解析:export CUDA_VISIBLE_DEVICES=1
说明:可设置环境变量CUDA_VISIBLE_DEVICES,指明可见的CUDA设备。
7. allow_soft_placement和log_device_placement
解析:with tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True))
(1)allow_soft_placement能让tensorflow遇到无法用GPU跑的数据时,自动切换成CPU进行。
(2)log_device_placement记录一些日志。
(3)config.gpu_options.allocator_type='BFC'使用BFC算法。
8. tf.nn.conv2d_transpose
解析:tf.nn.conv2d_transpose(value, filter, output_shape, strides, padding='SAME', name=None)
(1)value是上一层的feature map。
(2)filter是卷积核[kernel_size, kernel_size, output_channel, input_channel]。
(3)output_shape定义输出的尺寸[batch_size, height, width, channel]。
(4)padding是边界打补丁的算法。
9.
解析:
(1)
(2)
(3)
(4)
10. TensorFlow数据集
解析:
(1)数据集:基类,包含用于创建和转换数据集的函数。允许从内存中的数据或从Python生成器初始化数据集。
(2)TextLineDataset:从文本文件中读取各行内容。
(3)TFRecordDataset:从 TFRecord 文件中读取记录。
(4)FixedLengthRecordDataset:从二进制文件中读取固定大小的记录。
(5)迭代器:提供了一种一次获取一个数据集元素的方法。
11. 数据流图(Data Flow Graph)
解析:数据流图用“结点”(nodes)和“线”(edges)的有向图来描述数学计算。“节点” 一般用来表示施加的数学操作,
但也可以表示数据输入(feed in)的起点/输出(push out)的终点,或者是读取/写入持久变量(persistent
variable)的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,
即“张量”(tensor)。张量从图中流过的直观图像是这个工具取名为“Tensorflow”的原因。一旦输入端的所有张量准备
好,节点将被分配到各种计算设备完成异步并行地执行运算。
12. TensorFlow单进程集群
解析:
import tensorflow as tf
c = tf.constant("Hello, distributed TensorFlow!")
server = tf.train.Server.create_local_server()
sess = tf.Session(server.target)
sess.run(c)
说明:create_local_server:creates a new single-process cluster running on the local host.
13. tf.train.ClusterSpec
解析:
(1)tf.train.ClusterSpec({"local": ["localhost:2222", "localhost:2223"]}):/job:local/task:0;/job:local/task:1
(2)tf.train.ClusterSpec({"worker": ["worker0.example.com:2222", "worker1.example.com:2222",
"worker2.example.com:2222"], "ps": ["ps0.example.com:2222", "ps1.example.com:2222"]}):/job:worker/task: 0
;/job:worker/task:1;/job:worker/task:2;/job:ps/task:0;/job:ps/task:1
说明:tf.train.Server通过tf.train.ClusterSpec构造函数,确定本地任务的工作名称和任务index。
14. TensorFlow分布式编程(Y=2*X+10)[2]
解析:无论是ps节点还是worker节点,运行的都是同一份代码,只是命令参数指定不一样。如下所示:
(1)ps节点
python distribute.py --ps_hosts=192.168.106.128:2222 --worker_hosts=192.168.106.129:2224,
192.168.106.130:2225 --job_name=ps --task_index=0
(2)worker节点
python distribute.py --ps_hosts=192.168.106.128:2222 --worker_hosts=192.168.106.129:2224,
192.168.106.130:2225 --job_name=worker --task_index=0
python distribute.py --ps_hosts=192.168.106.128:2222 --worker_hosts=192.168.106.129:2224,
192.168.106.130:2225 --job_name=worker --task_index=1
说明:ps节点主要是保存和更新参数的节点,worker节点主要是负责计算的节点。节点可以是虚拟的节点,也可以是
物理的节点。
参考文献:
[1] All symbols in TensorFlow:https://www.tensorflow.org/api_docs/python/
[2] 白话tensorflow分布式部署和开发:http://www.tensorflow123.cn/baihuatfdistribute.html