tensorflow
的collection
提供一个全局的存储机制,不会受到变量名
生存空间的影响。一处保存,到处可取。
接口介绍
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
tf
自己也维护一些collection
,就像我们定义的所有summary op
都会保存在name=tf.GraphKeys.SUMMARIES
。这样,tf.get_collection(tf.GraphKeys.SUMMARIES)
就会返回所有定义的summary op
tf.add_to_collection:把变量放入一个集合,把很多变量变成一个列表
tf.get_collection:从一个结合中取出全部变量,是一个列表
tf.add_n:把一个列表的东西都依次加起来
import tensorflow as tf;
import numpy as np;
import matplotlib.pyplot as plt;
v1 = tf.get_variable(name='v1', shape=[1], initializer=tf.constant_initializer(0))
tf.add_to_collection('loss', v1)
v2 = tf.get_variable(name='v2', shape=[1], initializer=tf.constant_initializer(2))
tf.add_to_collection('loss', v2)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
print tf.get_collection('loss')
print sess.run(tf.add_n(tf.get_collection('loss')))
也可以在声明变量的时候指定放到哪个collection中
w1 = tf.get_variable('w1', [self.n_features, n_l1], initializer=w_initializer, collections=c_names)
b1 = tf.get_variable('b1', [1, n_l1], initializer=b_initializer, collections=c_names)
l1 = tf.nn.relu(tf.matmul(self.s_, w1) + b1)