Saya mengalami beberapa masalah dengan model seq2seq saya dalam beberapa kasus berfungsi dengan baik tetapi dalam beberapa kasus hasilnya hanya token akhir saja yang kembali.
Misalnya :
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]
saya mencoba menggunakan panggilan balik SaveModel dari keras yang memantau "kerugian" tetapi masih memberikan hasil yang sama.
jadi saya berpikir mungkin saya harus menggunakan fungsi kerugian saya sendiri.
fungsi kerugian sederhana yang disediakan keras:
def mean_absolute_error(y_true, y_pred):
return K.mean(K.abs(y_pred - y_true), axis=-1)
baik y_true dan y_pred adalah objek tensorflow (kita hanya mendapatkan penunjuk ke array sebenarnya) jadi .. untuk membuat beberapa logika kita perlu mendapatkan array dari GPU atau mengunggah array saya sendiri ke GPU..
fungsi kehilangan yang saya inginkan
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
saya mencoba menggunakan y_true.eval() yang seharusnya membawa array sebagai objek numpy ke cpu (Tidak dapat mengevaluasi tensor menggunakan eval()
: Tidak ada sesi default yang terdaftar)
dan saya tidak berhasil menemukan cara mengunggah array saya sendiri ke tensorflow.
jika Anda memiliki solusi atau saran, saya akan dengan senang hati mendengarnya.
Terima kasih..
(tidak terlalu penting tapi ...)
Model berdasarkan: https://blog.keras.io/a-ten-menit-introduksi-to-sequence-to-sequence-learning-in-keras.html , tetapi dengan one-hot(dua redup [Matrix] ) keluaran.
decode_sequence
:# Exit condition: either hit max length or find stop character.
Mereka juga mengisi array keluaran model dengan karakter awal:# Populate the first character of target sequence with the start character.
Saya ingin tahu apakah Anda menggunakan fungsi yang mirip dengan fungsidecode_sequence
mereka? - person vasilyrud   schedule 26.03.2018decode_sequence
mereka dengan tepat, dan lihat apakah itu berfungsi terlebih dahulu. Ini mungkin satu-satunya cara untuk memprediksi seq-to-seq di Keras. - person vasilyrud   schedule 26.03.2018