Я пытаюсь применить функцию среднего пула к выходным данным 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, для каждого образца в последовательности) b. Формат моих входных данных, который работал при использовании 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, критерий поезда.placeholders[1]: Input(num_labels, dynamic_axes=[Axis.default_batch_axis()])}) File ".../anaconda3/envs/cntk- py35/lib/python3.5/site-packages/cntk/utils/swig_helper.py", строка 58, в обертке result = f(*args, **kwds) File ".../anaconda3/envs/cntk-py35 /lib/python3.5/site-packages/cntk/ops/functions.py", строка 449, в replace_placeholders возвращает super(Function, self).replace_placeholders(substitutions) File ".../anaconda3/envs/cntk-py35 /lib/python3.5/site-packages/cntk/cntk_py.py", строка 1246, в replace_placeholders возвращает _cntk_py.Function_replace_placeholders(self, placeholderReplacements) RuntimeError: в настоящее время, если операнд поэлементной операции имеет какие-либо динамические оси, они должны совпадать динамические оси других операндов