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

Tensorflow: variable number of levels in a neural net model

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

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

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

在给你理由之前,我想说tensorflow是为静态计算图而生的。所以,这个答案是为了做这个:

  1. 正在从文件中读取一定数量
  2. 构建具有该隐藏层数的模型
  3. 使用这个模型并提供一些其他输出

我仍然不清楚为什么你在某处读取隐藏层的数量,其中隐藏(或潜在)意味着这些是不依赖于你的数据的超参数。

无论如何,根据变量构建不同数量的层很简单:

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有最后一层的输出