2017-06-24 21 views
1

由於權重未明確定義,我如何將它們傳遞給摘要作者?如何在tf.layers上使用張量板?

對於爲例:

conv1 = tf.layers.conv2d(
    tf.reshape(X,[FLAGS.batch,3,160,320]), 
    filters = 16, 
    kernel_size = (8,8), 
    strides=(4, 4), 
    padding='same', 
    kernel_initializer=tf.contrib.layers.xavier_initializer(), 
    bias_initializer=tf.zeros_initializer(), 
    kernel_regularizer=None, 
    name = 'conv1', 
    activation = tf.nn.elu 
    ) 

=>

summarize_tensor(
    ?????? 
) 

謝謝!

回答

3

這取決於你要在TensorBoard中記錄什麼。如果你想把每個變量放到TensorBoard中,請致電tf.all_variables()tf.trainable_variables()將會給你所有的變量。請注意,tf.layers.conv2d只是創建Conv2D實例並調用它的apply方法的一個包裝器。你可以這樣解開它:

conv1_layer = tf.layers.Conv2D(
    filters = 16, 
    kernel_size = (8,8), 
    strides=(4, 4), 
    padding='same', 
    kernel_initializer=tf.contrib.layers.xavier_initializer(), 
    bias_initializer=tf.zeros_initializer(), 
    kernel_regularizer=None, 
    name = 'conv1', 
    activation = tf.nn.elu 
) 

conv1 = conv1_layer.apply(tf.reshape(X,[FLAGS.batch,3,160,320])) 

然後你可以使用conv1_layer.kernel來訪問內核權重。

+0

Conv2D對象沒有屬性'kernel' –

+0

內核屬性是不存在了,有現在是'權重',但我不確定'tf.summary.histogram(「權重」,conv1_layer.weights)是否足夠。 – juliohm

1

大同答案完成後,我花了一段時間才意識到如何使用它。爲了節省時間,另一個初學者,你需要將以下添加到您的代碼對所有訓練的變量添加到tensorboard摘要:

for var in tf.trainable_variables(): 
    tf.summary.histogram(var.name, var) 
merged_summary = tf.summary.merge_all()