На самом деле это ошибка в ВОЗВРАЩЕНИИ.Я создал запрос на получение здесь , который должен это исправить, и объединил его сейчас.
Проблема была не в вашем пользовательском слое, а скорее в слое внутри вашего RecLayer, который на самом деле былполностью независимый, то есть этот:
'encoder_int': {'activation': None,
'class': 'linear',
'from': ['base:encoder'],
'n_out': 1000,
'with_bias': False}
Это зависит только от одного базового слоя ("base:encoder"
), больше ничего.Таким образом, он (правильно) оптимизирует этот слой из повторяющегося цикла, потому что он независим.
Однако затем он видит, что вы обращаетесь к этому слою внутри цикла, и, поскольку это цикл с течением времени, онПредполагается, что этот цикл превышает это временное измерение "base:encoder"
.Затем он пытается развернуть "base:encoder"
(TensorArray.unroll
) по заданному уровню слоя записи, но затем не удается, потому что в это время он не знает последовательность слоя записи.
Myfix теперь выполняет более продвинутую проверку правильности этого предположения, то есть, что цикл действительно находится в одном измерении времени.Проверка немного хрупкая, и не уверен, что она работает правильно во всех случаях.Однако я создал тестовый пример, который воспроизводит вашу проблему, и теперь это исправлено.