开发者社区> 问答> 正文

有个问题,关于tensorflow中的batch的理解。

我在查看BasicRNNCell和static_rnn的实现。原理上我们都知道 h <- tanh(Wx + Uh + b),那么对于每一个输入的x向量(比如一共有 10 个features,那么就是一个长度为 10 的向量)。

为了加快运算,我们通常一次批量送入batch_size条数据,比如batch_size = 100, 这样一次就送入 100 条数据。

但当我查看BasicRNNCell和static_rnn的实现时,发现同一批数据不会做 h 的累加。也就是说, 向量x_{0}, x_{1}, … x_{99}没有使用 h <- tanh(Wx + Uh + b),而是直接 h <- tanh(Wx + b)(如果初始 h 值为 0)。到了第二批数据时,也就是 x_{100}, x_{101} … 才使用上一批数据得到的 h 值。而同一批里也不会逐一叠加。

我想知道是我理解错了公式,还是对于batch的使用我有什么地方其实没有搞明白?

本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。点击链接欢迎加入感兴趣的技术领域群

展开
收起
珍宝珠 2019-10-17 14:15:18 1118 0
1 条回答
写回答
取消 提交回答
  • 同一个batch的数据可以看作是相互独立的,RNN计算t时刻的数据会用到t-1时刻的隐藏层数据而不是对batch数据进行累加,batch_size=100,前向时就相当于分100次调用RNNCell。batch除了有并进行计算的作用外,还有其他作用,比如训练时决定梯度下降的方向等,选择合适batch size对训练很有效的。

    2020-03-05 19:51:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
深度学习框架实战-Tensorflow 立即下载
DEGREE: Deep Learning For Graph Embedding 立即下载
Processing Terabyte Scale Genomics Datasets with ADAM 立即下载