У меня возникли проблемы с моей моделью seq2seq, в некоторых случаях она работает нормально, но в некоторых случаях в результате возвращается только конечный токен.
Например :
For given vector :
[2, #start token
3,
123,
1548, #end token
1548,
1548,
1548,
1548,
1548,
1548]
The model predict :
[1548,
1548,
1548,
1548,
1548,
1548,
1548,
1548,
1548,
1548]
я пытался использовать обратный вызов SaveModel от keras, который отслеживает «потери», но он все еще дает тот же результат.
поэтому я понимаю, что, возможно, мне следует использовать свою собственную функцию потерь.
простая функция потерь, которую предоставляет keras:
def mean_absolute_error(y_true, y_pred):
return K.mean(K.abs(y_pred - y_true), axis=-1)
и y_true, и y_pred являются объектами тензорного потока (мы получаем только указатель на реальный массив), поэтому ... для создания некоторой логики нам нужно получить массив из графического процессора или загрузить свой собственный массив в графический процессор.
моя разыскиваемая функция потери
def mean_absolute_error(y_true, y_pred):
sum = 0
for y , _y in zip(y_true , y_pred):
if (y == _y) and (y == self.startToken or y == self.endToken):
continue
else:
sum += abs(y - _y)
return sum
я пытался использовать y_true.eval(), который должен передать массив как объект numpy в процессор (невозможно оценить тензор с помощью eval()
: сеанс по умолчанию не зарегистрирован)
и мне не удалось найти, как загрузить свой собственный массив в tensorflow.
если у вас есть решение или какое-либо предложение, я буду более чем рад услышать об этом.
Спасибо..
(не столь важно, но...)
Модель основана на: https://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html , но с одним горячим (двумя тусклыми [Matrix] ) выход.
decode_sequence
:# Exit condition: either hit max length or find stop character.
Они также предварительно заполняют выходной массив модели начальным символом:# Populate the first character of target sequence with the start character.
Мне интересно, используете ли вы функцию, аналогичную их функцииdecode_sequence
? - person vasilyrud   schedule 26.03.2018decode_sequence
и сначала посмотрите, сработает ли это. Возможно, это единственный способ предсказать последовательную последовательность в Керасе. - person vasilyrud   schedule 26.03.2018