我在将3个输入(形状不同的占位符)传递到神经网络的隐藏层时遇到了困难。
这是我目前的代码:
with tf.name_scope("Final_Check"): # TODO: 这样传递3个输入到隐藏层正确吗? final_layer1 = tf.layers.dense([self.final_time_input, self.final_request_input, self.final_stream_input], 500, activation=tf.nn.relu, name="final_hl1") final_layer2 = tf.layers.dense(final_layer1, 500, activation=tf.nn.relu, name="final_h12") final_layer3 = tf.layers.dense(final_layer2, 500, activation=tf.nn.relu, name="final_hl3") final_output = tf.layers.dense(final_layer3, 500, activation=tf.nn.relu, name="final_output")
占位符:
- self.final_time_input
- self.final_request_input
- self.final_stream_input
隐藏层:所有的final_layer[1-3]和final_output
我尝试过在谷歌上搜索一些示例代码,但没有找到任何相关内容。
回答:
tf.layers.dense
期望接收张量输入。在你的例子中,它是一个列表([self.final_time_input, self.final_request_input, self.final_stream_input]
)。你需要使用 tf.concat
将它们连接起来,像这样:
tf.concat([self.final_time_input, self.final_request_input, self.final_stream_input], axis=1)
假设输入张量的形状为 [batch_size, feature_size]
,其中 feature_size
可以不同。