【问题标题】:what is the difference of 'call' v.s '__call__' RNN methods in tensorflow?张量流中'call'与'__call__' RNN方法有什么区别?
【发布时间】:2018-09-11 04:08:02
【问题描述】:

我知道__call__ 是什么,但让我感到困惑的是,像 BasicRNNCell 或 tf.nn.rnn_cell.MultiRNNCell 这样的类有这个“调用”方法而不是 _call__ 。这个普通的调用方法是什么?似乎是同一件事,如果不是,那么我没有看到它被调用。 我在没有任何线索的地方找到了这个解释。你能澄清一下吗?

“调用函数是单元逻辑所在的位置。RNNCell 的 __call_ 方法将包装你的调用方法并帮助确定范围和其他后勤工作。” 示例:

def call(self, inputs, state):

    total_hidden_size = sum(c._h_above_size for c in self._cells)

    # split out the part of the input that stores values of ha
    raw_inp = inputs[:, :-total_hidden_size]                # [B, I]
    raw_h_aboves = inputs[:, -total_hidden_size:]           # [B, sum(ha_l)]

    ha_splits = [c._h_above_size for c in self._cells]
    h_aboves = array_ops.split(value=raw_h_aboves,
                               num_or_size_splits=ha_splits, axis=1)

    z_below = tf.ones([tf.shape(inputs)[0], 1])             # [B, 1]
    raw_inp = array_ops.concat([raw_inp, z_below], axis=1) # [B, I + 1]

【问题讨论】:

标签: tensorflow methods call lstm rnn


【解决方案1】:

在tensorflow2.0中,如果你通过子类化tf.keras.Model来定义你的网络,你需要在call()中实现模型的前向传递。

https://www.tensorflow.org/api_docs/python/tf/keras/Model

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2019-05-07
    • 2018-04-30
    • 1970-01-01
    • 2016-06-25
    相关资源
    最近更新 更多