CNTK:在LSTM输出上应用平均池

时间:2017-01-25 18:28:47

标签: cntk

我正在尝试对LSTM的输出应用平均汇集函数:

  Sequential([
            Embedding(emb_dim),
            pooling(Recurrence(LSTM(hidden_dim), go_backwards=False), PoolingType_Average, (hidden_dim,)),
            Dense(num_labels)
        ])

当我刚刚使用序列的最后一个元素时,它没有问题:

Sequential([
            Embedding(emb_dim),
            sequence.last(Recurrence(LSTM(hidden_dim), go_backwards=False)),
            Dense(num_labels)
        ])

一个。在网络定义中添加池是否正确并且我设置的形状是否描述了我尝试执行的操作? (即对序列中每个样品的LSTM平均值进行平均) 湾使用sequence.last时我的输入数据格式如下(1个序列)。是否需要更改以应用均值池?

1       |x 5:1  |y 1 0 0 0 0
1       |x 414:1
1       |x 8:1

我得到的错误是:

文件... / model_training.py",第55行,在火车上     criterion.placeholders [1]:输入(num_labels,dynamic_axes = [Axis.default_batch_axis()])})   文件" ... / anaconda3 / envs / cntk-py35 / lib / python3.5 / site-packages / cntk / utils / swig_helper.py",第58行,在包装器中     result = f(* args,** kwds)   在replace_placeholders中的文件" ... / anaconda3 / envs / cntk-py35 / lib / python3.5 / site-packages / cntk / ops / functions.py",第449行     return super(函数,self).replace_placeholders(替换)   文件" ... / anaconda3 / envs / cntk-py35 / lib / python3.5 / site-packages / cntk / cntk_py.py",第1246行,在replace_placeholders中     return _cntk_py.Function_replace_placeholders(self,placeholderReplacements) RuntimeError:当前如果元素运算的操作数有任何动态轴,那么它们必须与其他操作数的动态轴匹配

1 个答案:

答案 0 :(得分:0)

合并仅适用于静态轴。在2017年1月底(2017年),有一个sequence.pooling操作的分支应该在master中可用。您也可以通过重复进行平均合并。这个example个池通过重复出现“学习”平均池。