Tensorflow示例为行或列?

时间:2016-09-26 13:31:25

标签: tensorflow recurrent-neural-network

鉴于Tensorflow API nn.softmaxnn.sparse_softmax_cross_entropy_with_logitstf.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中,激活也是列向量。

1 个答案:

答案 0 :(得分:0)

我认为这纯粹是一个惯例问题,而且(大多数)机器学习研究人员和从业者已同意采用[n_samples, input_size]惯例。当一个实例不是具有d元素的向量,而是一般的[d1, d2, ..., dm]数组(例如,一个实例是[width, height, 3] RGB图像)时,一个优势变得明显。使用[n_samples, input_size]约定,您始终可以依赖第一个索引作为样本大小。