【问题标题】:Tensorflow examples as rows or columns?张量流示例作为行或列?
【发布时间】:2017-02-03 21:10:46
【问题描述】:

鉴于 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中,激活也是列向量。

【问题讨论】:

  • 示例通常是第 0 个维度(即批次维度)。我认为原因是这个维度通常存在,其他维度是可选的,所以把它设为第一个是有意义的

标签: tensorflow recurrent-neural-network


【解决方案1】:

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

【讨论】:

  • 谢谢,但很多研究文章显示了另一种方式,请参阅我的编辑。好一点,输入可以有不同的维度,但这是 API 约定,不再是矩阵乘法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 2018-05-04
  • 2019-01-30
  • 2016-03-28
  • 2018-01-11
  • 1970-01-01
相关资源
最近更新 更多