xti*_*ger 7 python fold deep-learning tensorflow
我正在尝试使用TensorFlow Fold实现本文TreeLSTM.实际上,在Tensorflow Fold中,已经有一个TreeLSTM的例子,但是在BinaryTreeLSTM版本中,这是教程:https://github.com/tensorflow/fold/blob/master/tensorflow_fold/g3doc/sentiment.ipynb
我现在要做的是实现一个真正的NaryTreeLSTM,意味着LSTM节点可以是任意数量子节点的父节点,而不仅仅是上面教程中的2节点.
这是我尝试折叠树的尝试,这是上例中的修改版本logits_and_state()"
def logits_and_state():
"""Creates a block that goes from tokens to (logits, state) tuples."""
word2vec = (td.GetItem(0) >> td.InputTransform(lookup_word) >>
td.Scalar('int32') >> word_embedding)
children_num =
children2vec_list = list()
children2vec_list.append(embed_subtree())
for i in range(children_num):
children2vec_list.append(embed_subtree())
children2vec = tuple(children2vec_list)
# Trees are binary, so the tree layer takes two states as its input_state.
zero_state = td.Zeros((tree_lstm.state_size,) * 2)
# Input is a word vector.
zero_inp = td.Zeros(word_embedding.output_type.shape[0])
# word_case =
word_case = td.AllOf(word2vec, zero_state)
children_case = td.AllOf(zero_inp, children2vec)
tree2vec = td.OneOf(lambda x: 1 if len(x) == 1 else 2), [(1,word_case),(2,children_case)])
return tree2vec >> tree_lstm >> (output_layer, td.Identity())
Run Code Online (Sandbox Code Playgroud)
这children_num是我现在正在努力的事情,我不知道这个数字,我知道可以通过td.GetItem(1)==> 获得子项的长度将生成一个包含子数组的块== >如何获得该块的实际数量?
您可能会说我应该尝试使用PyTorch或其他一些也提供Dynamic Computation Graph的DL框架,但在我的情况下,要求是严格的Tensorflow Fold.
| 归档时间: |
|
| 查看次数: |
519 次 |
| 最近记录: |