Project ilabel log probs to state log probs.
(labels, num_labels, ilabel_log_probs)
| 508 | |
| 509 | |
| 510 | def _ilabel_to_state(labels, num_labels, ilabel_log_probs): |
| 511 | """Project ilabel log probs to state log probs.""" |
| 512 | |
| 513 | num_label_states = _get_dim(labels, 1) |
| 514 | blank = ilabel_log_probs[:, :, :1] |
| 515 | blank = array_ops.tile(blank, [1, 1, num_label_states + 1]) |
| 516 | one_hot = array_ops.one_hot(labels, depth=num_labels) |
| 517 | one_hot = array_ops.expand_dims(one_hot, axis=0) |
| 518 | ilabel_log_probs = array_ops.expand_dims(ilabel_log_probs, axis=2) |
| 519 | state_log_probs = math_ops.reduce_sum(ilabel_log_probs * one_hot, axis=3) |
| 520 | state_log_probs = array_ops.concat([state_log_probs, blank], axis=2) |
| 521 | return array_ops.pad( |
| 522 | state_log_probs, [[0, 0], [0, 0], [1, 0]], |
| 523 | constant_values=math_ops.log(0.0)) |
| 524 | |
| 525 | |
| 526 | def _state_to_olabel(labels, num_labels, states): |
no test coverage detected