*一些大佬的笔记整合,仅用于便于学习和记忆*
用来把一个value放入名称是‘name’的集合,组成一个列表;
用来获取一个名称是‘key’的集合中的所有元素,返回的是一个列表,列表的顺序是按照变量放入集合中的先后; scope参数可选,表示的是名称空间(名称域),如果指定,就返回名称域中所有放入‘key’的变量的列表,不指定则返回所有变量。
把所有 ‘inputs’列表中的所有变量值相加,name可选,是操作的名称。
## coding: utf-8 ##
import tensorflow as tf
v1 = tf.get_variable(name='v1', shape=[1], initializer=tf.constant_initializer(1))
tf.add_to_collection('output', v1) # 把变量v1放入‘output’集合中
v2 = tf.get_variable(name='v2', shape=[1], initializer=tf.constant_initializer(2))
tf.add_to_collection('output', v2)
v3 = tf.get_variable(name='v3', shape=[1], initializer=tf.constant_initializer(3))
tf.add_to_collection('output',v3)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
print tf.get_collection('output') # 获取'output'列表内容
print sess.run(tf.add_n(tf.get_collection('output'))) # tf.add_n把列表中所有内容一次性相加
# print:
# [, ,
]
# [ 6.]
(转自tensorflow中 tf.add_to_collection、 tf.get_collection 和 tf.add_n函数 - 未雨愁眸 - 博客园)
此函数是Adam优化算法:是一个寻找全局最优点的优化算法,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。相比于基础SGD算法,1、不易于陷于局部有点 2、速度更快。
实现了 AdamOptimizer 算法的优化器,它综合了 Momentum 和 RMSProp 方法,对每个参数保留一个学习率与一个根据过去梯度信息求得的指数衰减均值。
梯度下降代码:
train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)
tf.train.AdamOptimizer函数的所有参数:
(
learning_rate=0.001,
beta1=0.9, #The exponential decay rate for the 1st moment estimates.
beta2=0.999, #The exponential decay rate for the 2nd moment estimates.
epsilon=1e-08, #A small constant for numerical stability.
use_locking=False, #If True use locks for update operations.
name='Adam' #Optional name for the operations created when applying gradients.
Defaults to "Adam".
)
tf.train.AdamOptimizer.__init__(learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08,
use_locking=False, name=’Adam’)