簡體   English   中英

Tensorflow:將手動構建圖層轉換為tf.contrib.layers

[英]Tensorflow: Transforming manually build layers to tf.contrib.layers

我定義了這四個層次:

layer_1 = tf.add(
    tf.matmul(input, tf.Variable(tf.random_normal([n_input, n_hidden_1])),
    tf.Variable(tf.random_normal([n_hidden_1]))))
layer_2 = tf.nn.sigmoid(tf.add(
    tf.matmul(layer_1, tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),
    tf.Variable(tf.random_normal([n_hidden_2]))))
layer_3 = tf.nn.sigmoid(tf.add(
    tf.matmul(layer_2, tf.Variable(tf.random_normal([n_hidden_2, n_hidden_1])))),
    tf.Variable(tf.random_normal([n_hidden_1]))))
layer_4 = tf.add(
    tf.matmul(layer_3, tf.Variable(tf.random_normal([n_hidden_1, n_input]))),
    tf.Variable(tf.random_normal([n_input])))

我想將此代碼轉換為基於tf.contrib.layers代碼。 到目前為止我得到了

layer_1 = tf.contrib.layers.fully_connected(
    inputs=input,
    num_outputs=n_hidden_1,
    activation_fn=None)
layer_2 = tf.contrib.layers.fully_connected(
    inputs=layer_1,
    num_outputs=n_hidden_2,
    activation_fn=tf.nn.sigmoid)
layer_3 = tf.contrib.layers.fully_connected(
    inputs=layer_2,
    num_outputs=n_hidden_1,
    activation_fn=tf.nn.sigmoid)
layer_4 = tf.contrib.layers.linear(
    inputs=layer_3,
    num_outputs=n_input)

閱讀https://www.tensorflow.org/versions/master/tutorials/layers/https://www.tensorflow.org/api_docs/python/tf/contrib/layers/fully_connected 我在https://www.tensorflow.org/api_guides/python/contrib.layers#Higher_level_ops_for_building_neural_network_layers中讀到, tf.contrib.layers.linear是線性層的替代方案。

但是我的輸出與我之前的輸出相比更加不同,那么這可能是偶然的。 我在層的配置中做錯了什么?

您的代碼與tf.contrib.layers版本之間的一個區別是默認初始值設定項不同:

這些通常被認為是完全連接層的良好默認值,但您可以使用tf.random_normal_initializer覆蓋它們,如下所示:

layer_1 = tf.contrib.layers.fully_connected(
    inputs=input,
    num_outputs=n_hidden_1,
    activation_fn=None,
    weights_initializer=tf.random_normal_initializer(),
    biases_initializer=tf.random_normal_initializer())
# ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM