gpt4 book ai didi

python - tf.layers.dense() 如何与更高暗淡的输入交互?

转载 作者:太空狗 更新时间:2023-10-29 21:10:30 27 4
gpt4 key购买 nike

在 tensorflow layers.dense(inputs, units, activation) 中实现了一个具有任意激活函数的多层感知器层。

输出=激活(matmul(输入,权重)+偏差)

通常输入有 shape=[batch_size, input_size] 并且可能看起来像这样:(units = 128 和 activation = tf.nn.relu 是任意选择的)

inputx = tf.placeholder(float, shape=[batch_size, input_size])
dense_layer = tf.layers.dense(inputx, 128, tf.nn.relu)

我还没有找到任何关于如果我输入更高维度的输入会发生什么的文档,例如因为一个人可能有 time_steps 导致张量的形状 = [time_step, batch_size, input_size]。这里想要的是,该层应用于批处理中每个元素的每个时间步长的每个单个 input_vector。换句话说,layers.dense() 的内部 matmul 应该简单地使用 numpy 风格的广播。我在这里期望的行为是实际发生的吗? IE。是:

inputx = tf.placeholder(float, shape=[time_step, batch_size, input_size])
dense_layer = tf.layers.dense(inputx, 128, tf.nn.relu)

对于 batch_size 中每个元素的每个 time_step,将密集层应用于大小为 input_size 的每个输入?这应该会导致张量(在上面的 dense_layer 中)为 shape=[time_step, batch_size, 128]我在问,例如tf.matmul 不支持 numpy 风格的广播,所以我不确定 tensorflow 如何处理这些情况。

编辑:This post is related, but does not finally answer my question

最佳答案

您可以通过检查密集核的形状来验证您的预期,如下所示。

>>> inputx = tf.placeholder(float, shape=[2,3,4])
>>> dense_layer = tf.layers.dense(inputx, 128, tf.nn.relu)
>>> g=tf.get_default_graph()
>>> g.get_collection('variables')
[<tf.Variable 'dense/kernel:0' shape=(4, 128) dtype=float32_ref>, <tf.Variable 'dense/bias:0' shape=(128,) dtype=float32_ref>]

密集层的行为与卷积层相同。

您可以将 inputx 视为具有 width=2、height=3 和 channel=4 的图像,并将密集层视为具有 128 个过滤器且过滤器大小为 1*1 的 conv 层。

关于python - tf.layers.dense() 如何与更高暗淡的输入交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52254253/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com