- 创建一个graph,
- TensorFlow 会话(Session)负责处理在诸如 CPU 和 GPU 之类的设备上的操作并运行它们,并且它保留所有变量值。
常量
1 |
|
变量
训练过程中会不断优化 当值需要在会话中更新时,我们使用可变张量
1 |
|
global_variables_initializer
必须运行在所有Variable
声明之后 不然报错 fuck session 和 变量初始化不能搞在一起吗?
1 |
|
assign
变量的再赋值
scope
get_variable and Variable
tf.Variable
必须有初始值tf.Variable
始终创建一个新变量,已存在具有此类名称的变量,则可能会为变量名称添加后缀tf.get_variable
从graph中获取具有这些参数的现有变量,如果它不存在,它将创建一个新变量,存在的话会报错
1 |
|
name_scope and variable_scope
- 两个scope对使用
tf.Variable
创建的变量具有相同的效果,即范围将作为操作或变量名称的前缀添加。 tf.variable_scope
就不一样了
1 |
|
scope reuse 共享变量 tf.variable_scope
和 tf.get_variable
搭配
1 |
|
占位符
它们通常用于在训练期间将训练数据传递给TensorFlow 实际上不执行任何计算
1 |
|
dtype
dtype 转换
1 |
|
save load
默认情况下,保存器将以自己的名称保存并还原所有Variable
,但如果需要更多控制,则可以指定要保存或还原的变量以及要使用的名称
1 |
|
tensor board
正在定期保存检查点 可视化训练进度 checkpoint
1 |
|
1 |
|
必须是完整路径 fuck 不能相对路径 Pycharm 有Copy Path
1 |
|
device
"/cpu:0"
for the CPU devices and "/gpu:I"
for the \(i^{th}\) GPU device
log_device_placement=True
验证TensorFlow确实使用指定的设备,打logallow_soft_placement=True
如果您不确定该设备并希望TensorFlow选择现有和支持的设备
GPU比CPU快得多,因为它们有许多小内核。然而,就计算速度而言,将GPU用于所有类型的计算并不总是有利的。 与GPU相关的开销有时在计算上比GPU提供的并行计算的优势更昂贵。为了解决这个问题, TensorFlow提供了在特定设备上进行计算的条款。默认情况下,如果CPU和GPU都存在,TensorFlow优先考虑GPU。
1 |
|
optimizers
learning_rate传入初始lr值,global_step用于逐步计算衰减指数,decay_steps用于决定衰减周期,decay_rate是每次衰减的倍率, staircase若为False则是标准的指数型衰减,True时则是阶梯式的衰减方法,目的是为了在一段时间内(往往是相同的epoch内)保持相同的learning rate
其实可以直接使用一些改变learning_rate的变化的AdamOptimizer之类的
decay every 100000 steps with a base of 0.96
1 |
|
1 |
|
Gradient Clipping
直观作用就是让权重的更新限制在一个合适的范围
1 |
|
autoencode
CAE
Convolutional Autoencoders (CAE)
transposed convolution layers tf.nn.conv2d_transpose 产生人工假象(artefacts) 使用tf.image.resize_nearest_neighbor 代替
1 |
|