Configure the Projector for embeddings.
(self)
| 1517 | self._prev_summary_step = context.context().summary_step |
| 1518 | |
| 1519 | def _configure_embeddings(self): |
| 1520 | """Configure the Projector for embeddings.""" |
| 1521 | # TODO(omalleyt): Add integration tests. |
| 1522 | from tensorflow.python.keras.layers import embeddings |
| 1523 | try: |
| 1524 | from tensorboard.plugins import projector |
| 1525 | except ImportError: |
| 1526 | raise ImportError('Failed to import TensorBoard. Please make sure that ' |
| 1527 | 'TensorBoard integration is complete."') |
| 1528 | config = projector.ProjectorConfig() |
| 1529 | for layer in self.model.layers: |
| 1530 | if isinstance(layer, embeddings.Embedding): |
| 1531 | embedding = config.embeddings.add() |
| 1532 | embedding.tensor_name = layer.embeddings.name |
| 1533 | |
| 1534 | if self.embeddings_metadata is not None: |
| 1535 | if isinstance(self.embeddings_metadata, str): |
| 1536 | embedding.metadata_path = self.embeddings_metadata |
| 1537 | else: |
| 1538 | if layer.name in embedding.metadata_path: |
| 1539 | embedding.metadata_path = self.embeddings_metadata.pop(layer.name) |
| 1540 | |
| 1541 | if self.embeddings_metadata: |
| 1542 | raise ValueError('Unrecognized `Embedding` layer names passed to ' |
| 1543 | '`keras.callbacks.TensorBoard` `embeddings_metadata` ' |
| 1544 | 'argument: ' + str(self.embeddings_metadata.keys())) |
| 1545 | |
| 1546 | class DummyWriter(object): |
| 1547 | """Dummy writer to conform to `Projector` API.""" |
| 1548 | |
| 1549 | def __init__(self, logdir): |
| 1550 | self.logdir = logdir |
| 1551 | |
| 1552 | def get_logdir(self): |
| 1553 | return self.logdir |
| 1554 | |
| 1555 | writer = DummyWriter(self.log_dir) |
| 1556 | projector.visualize_embeddings(writer, config) |
| 1557 | |
| 1558 | def _close_writers(self): |
| 1559 | """Close all remaining open file writers owned by this callback. |
no test coverage detected