【发布时间】:2017-02-03 21:10:46
【问题描述】:
鉴于 Tensorflow API nn.softmax、nn.sparse_softmax_cross_entropy_with_logits、tf.nn.rnn 等,似乎惯例是将样本作为一批行放置。
然后,神经网络中的前向传递是tf.matmul(input_batch, W) + b,其中input_batch 是形状为[n_samples, input_size] 的矩阵。 n_samples 在 API 中通常被命名为 batch_size。行向量b 的添加在批次中的所有样本(行)上广播。
这是处理神经网络时普遍采用的约定吗?我已经阅读了很多将样本作为列并使用权重矩阵的左乘法进行前向传递的研究文章。为什么选择这个大会?
编辑
本文使用输入左侧权重矩阵的乘法,以及向量串联,所以样本必须是列: http://colah.github.io/posts/2015-08-Understanding-LSTMs/。它在此处的 TensorFlow 文档中被引用:https://www.tensorflow.org/versions/r0.11/tutorials/recurrent/index.html。
BasicLSTMCell的实现是基于这篇文章https://arxiv.org/pdf/1409.2329v5.pdf根据这里的来源https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/rnn_cell.py。您还可以从左侧看到乘法。
最后在这篇文章https://arxiv.org/pdf/1506.00019.pdf中,激活也是列向量。
【问题讨论】:
-
示例通常是第 0 个维度(即批次维度)。我认为原因是这个维度通常存在,其他维度是可选的,所以把它设为第一个是有意义的
标签: tensorflow recurrent-neural-network