鉴于等级3张量:
sentence_max_length = 5
batch_size = 3
n_hidden = 10
n_classes = 2
x = tf.constant(np.reshape(np.arange(150),(batch_size,sentence_max_length, n_hidden)), dtype = tf.float32)
并且等级2张量:
W = tf.constant(np.reshape(np.arange(20), (n_hidden, n_classes)), dtype = tf.float32)
并且排名1偏差张量:
b = tf.constant(np.reshape(np.arange(5), (n_classes), dtype = tf.float32))
我想知道 W
的最后两个轴是如何产生的,所以得到的矢量 Z
将是形状 (batch_size, max_length, n_classes)
尽管在图形创建过程中不会知道batch_size我在这里为了演示目的而给它一个值
所以澄清一下:
Z[0] = tf.matmul(x[0,:,:], W) + b
这样所有批次共享 W
和 b
. 这样做的原因是我试图使用 tf.dynamic_rnn
的 tf.dynamic_rnn
,其中输出的形状为 (batch_size, sentence_max_length, n_hidden)
,并在 output
上构建另一层,其共享权重 W
和 b
.
1 回答
一种方法可能是......
在内部,Dense层创建可训练的W&b变量 . 并且,它使用standard_ops.tensordot操作将最后一个维度转换为预计值 . 有关更多详细信息,请参阅此处的源代码 . https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/python/layers/core.py