【问题标题】:Exporting embeddings per epoch in Keras在 Keras 中每个 epoch 导出嵌入
【发布时间】:2020-12-09 01:07:21
【问题描述】:
我正在尝试在每个时期访问 Keras 中嵌入层的输出(n 维向量)。似乎没有针对此的特定回调。我已经尝试过 Tensorboard 回调,因为它提供了一个选项来记录每个时期的嵌入,但是当我找到日志文件时,我无法读取它们。它们可能是只能由 Tensorboard 访问以用于可视化目的的文件。我需要将嵌入向量保存为以后可以在 keras 外部使用的格式,例如 TSV 文件。有没有办法做到这一点?
非常感谢!
【问题讨论】:
标签:
vector
keras
callback
embedding
word-embedding
【解决方案1】:
好的,所以我想出了如何做到这一点,在 Nazmul Hasan 非常需要的帮助下,如何格式化要随每个时期更新的名称。本质上我创建了一个自定义回调:
import io
encoder = info.features['text'].encoder
class CustomCallback(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs=None):
out_v = io.open('vecs_{}.tsv'.format(epoch), 'w', encoding='utf-8')
vec = model.layers[0].get_weights()[0] # skip 0, it's padding.
out_v.write('\t'.join([str(x) for x in vec]) + "\n")
out_v.close()