Tensorflow:神经网络模型中可变数量的级别

时间:2017-08-26 13:43:22

标签: python tensorflow layer

我想知道是否有办法使用tensorflow(python)在模型中实现可变数量的隐藏层。我问这个是因为我不确切知道要实现多少级别,我必须读取一个文件或变量来获取该信息。
这就是我的想法:

w = tf.Variable(tf.random_normal([h, w]))
self.__encoder[index] = tf.matmul(label, w)

所以__encoder的每个级别都包含一个隐藏层,但我不知道它是否有效,也不知道如何实现训练。

1 个答案:

答案 0 :(得分:0)

在给出理由之前,我想说张量流是针对静态计算图形的。所以,这个答案是为了做到这一点:

  1. 从文件中读取一定数量
  2. 使用该数量的隐藏图层构建模型
  3. 使用此模型并提供其他一些输出
  4. 我仍然不清楚为什么你在某处读取隐藏层的数量,其中隐藏(或潜在)意味着这些是不依赖于你的数据的超参数。

    无论如何,根据变量构建不同数量的层就像:

    def layer(x, input_size, output_size):
        w = tf.Variable(tf.truncated_normal(shape=[input_size, output_size]))
        b = tf.Variable(tf.zeros([output_size]))
        return tf.sigmoid(tf.matmul(x,w) + b)
    
    num_layers = ... #read somewhere
    size_layers = ... #output_dimesion for each layer
    h = x
    for i in range(num_layers):
        h = layer(h, input_size, size_layers[i])
        input_size = size_layer[i]
    

    在循环之后,h具有最后一层的输出。