diff options
author | A. Unique TensorFlower <gardener@tensorflow.org> | 2018-04-23 15:56:12 -0700 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2018-04-23 15:59:06 -0700 |
commit | bb4a80c92105426ccf20a98c4291a1a3f8499b54 (patch) | |
tree | 4ea1670905182d4bda5109dff1a1053e666fec4b /tensorflow/core/kernels/lookup_table_op.h | |
parent | c8a1eeb98ca394d0330bead37b446bce998bb3d5 (diff) |
Implement exporting the keys/values in a hash table.
PiperOrigin-RevId: 193999421
Diffstat (limited to 'tensorflow/core/kernels/lookup_table_op.h')
-rw-r--r-- | tensorflow/core/kernels/lookup_table_op.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tensorflow/core/kernels/lookup_table_op.h b/tensorflow/core/kernels/lookup_table_op.h index 29a0cc91fe..3977f16299 100644 --- a/tensorflow/core/kernels/lookup_table_op.h +++ b/tensorflow/core/kernels/lookup_table_op.h @@ -177,6 +177,30 @@ class HashTable : public InitializableLookupTable { return table_ ? table_->size() : 0; } + Status ExportValues(OpKernelContext* context) override { + if (!is_initialized_) { + return errors::Aborted("HashTable is not initialized."); + } + + const int64 size = table_->size(); + + Tensor* keys; + Tensor* values; + TF_RETURN_IF_ERROR( + context->allocate_output("keys", TensorShape({size}), &keys)); + TF_RETURN_IF_ERROR( + context->allocate_output("values", TensorShape({size}), &values)); + + auto keys_data = keys->flat<K>(); + auto values_data = values->flat<V>(); + int64 i = 0; + for (auto it = table_->begin(); it != table_->end(); ++it, ++i) { + keys_data(i) = it->first; + values_data(i) = it->second; + } + return Status::OK(); + } + DataType key_dtype() const override { return DataTypeToEnum<K>::v(); } DataType value_dtype() const override { return DataTypeToEnum<V>::v(); } |