如何用paddle实现类似tensorflow map_fn()的功能
Created by: Akeepers
在用paddle复现一篇论文(提供了TensorFlow代码)的过程中,遇到TensorFlow的API map_fn,无法在paddle中找到类似功能的API。
需复现的tf代码:
memory_layer = tf.map_fn(lambda t:tf.matmul(t, self._Wm), x_time)
其中x_time是一个3-D tensor, shape为[seq_len, batch_size, hidden_size], _Wm是一个2-D 需学习的参数矩阵。
已知解决方案:利用paddle的动态图机制,这样可以把x_time转化为numpy格式
不清楚的地方在于如何实现,可以使得_Wm仍然是一个可学习的参数矩阵,每次反向的时候会更新?方便的话,可以提供代码demo吗?
如下的paddle代码是否可行:
wm = fluid.layers.create_parameter(name="wm", shape=[hidden_size, hidden_size], dtype='float32')
emb_rnn_ = fluid.layers.transpose(emb_rnn, perm=[1, 0, 2]) # shape: [seq_len, batch_size, hidden_size]
emb_rnn_np = fluid.Variable.numpy(emb_rnn_)
mem_layer_np = map(lambda t: fluid.dygraph.to_variable(t) * wm, emb_rnn_np)
mem_layer = fluid.dygraph.to_variable(mem_layer_np)