Tensorflow: 尚不清楚tf.layers.dense展平行为的文档

创建于 2017-03-07  ·  3评论  ·  资料来源: tensorflow/tensorflow

文档状态:

注意:如果inputs张量的秩大于2,则为
在初始矩阵之前展平的值乘以w

但是,以下内容返回形状shape=(2, 2, 2, 400)张量,就好像输入没有被拉平
tf.layers.dense(tf.placeholder(tf.float32, (2,2,2,2)), 400)

docs-bug

最有用的评论

啊,谢谢,tensordot连接使它更加清晰。

似乎tf.dense行为是将输入张量的最后一个索引与权重张量的第一个索引收缩。 “扁平化”一词令人困惑,不确定在这里是什么意思

我为自己制作的玩具示例,将tf.dense转换为等效的np.tensordot

tf.reset_default_graph()
x0 = np.ones((3, 3, 3))
w0 = np.arange(6).reshape((3, 2))
x = tf.constant(x0)
y = tf.layers.dense(x, 2)
var_dict = {v.op.name: v for v in tf.global_variables()}
assert(var_dict["dense/kernel"].get_shape() == (3, 2))
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
sess.run(tf.assign(var_dict["dense/kernel"], w0))
sess.run(tf.assign(var_dict["dense/bias"], np.zeros((2,))))

expected_y0 = np.tensordot(x0,w0,axes=[(2,),(0,)])
y0 = sess.run(y)
np.testing.assert_allclose(y0, expected_y0)

所有3条评论

抱歉,这并不是要删除自己。 内部调查,试图添加我认为负责的人。

因此,经过调查后,我得知它的行为类似于张量点,因此该行为和当前文档均正确无误-我与之交谈的工程师说他们认为我们可以使用更精确的语言,但事实并非如此。它不一定会有所帮助,因为在上下文中当前的语言是清晰而明确的。 (参见tensordot:https://docs.scipy.org/doc/numpy/reference/generated/numpy.tensordot.html)

如果您想尝试发出请求,请自己重新编写字词,这是值得欢迎的,但是由于我们不会在内部进行任何操作,因此我暂时关闭了此错误。

啊,谢谢,tensordot连接使它更加清晰。

似乎tf.dense行为是将输入张量的最后一个索引与权重张量的第一个索引收缩。 “扁平化”一词令人困惑,不确定在这里是什么意思

我为自己制作的玩具示例,将tf.dense转换为等效的np.tensordot

tf.reset_default_graph()
x0 = np.ones((3, 3, 3))
w0 = np.arange(6).reshape((3, 2))
x = tf.constant(x0)
y = tf.layers.dense(x, 2)
var_dict = {v.op.name: v for v in tf.global_variables()}
assert(var_dict["dense/kernel"].get_shape() == (3, 2))
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
sess.run(tf.assign(var_dict["dense/kernel"], w0))
sess.run(tf.assign(var_dict["dense/bias"], np.zeros((2,))))

expected_y0 = np.tensordot(x0,w0,axes=[(2,),(0,)])
y0 = sess.run(y)
np.testing.assert_allclose(y0, expected_y0)
此页面是否有帮助?
0 / 5 - 0 等级