def sequence_log_likelihood(y, y_hat, y_mask, y_hat_mask, blank_symbol):
"""
Based on code from Shawn Tan.
Credits to Kyle Kastner as well.
"""
y_hat_mask_len = tensor.sum(y_hat_mask, axis=0, dtype='int32')
y_mask_len = tensor.sum(y_mask, axis=0, dtype='int32')
log_probabs = _log_path_probabs(
y, T.log(y_hat), y_mask, y_hat_mask, blank_symbol)
batch_size = log_probabs.shape[1]
log_labels_probab = _log_add(
log_probabs[y_hat_mask_len - 1,
tensor.arange(batch_size),
y_mask_len - 1],
log_probabs[y_hat_mask_len - 1,
tensor.arange(batch_size),
y_mask_len - 2])
return log_labels_probab
评论列表
文章目录