| 108 | } |
| 109 | |
| 110 | TEST(EmbeddingVariableTest, TestEmptyEV) { |
| 111 | int64 value_size = 8; |
| 112 | Tensor value(DT_FLOAT, TensorShape({value_size})); |
| 113 | test::FillValues<float>(&value, std::vector<float>(value_size, 9.0)); |
| 114 | { |
| 115 | auto variable = CreateEmbeddingVar(value_size, value, 1); |
| 116 | |
| 117 | LOG(INFO) << "size:" << variable->Size(); |
| 118 | Tensor part_offset_tensor(DT_INT32, TensorShape({kSavedPartitionNum + 1})); |
| 119 | |
| 120 | BundleWriter writer(Env::Default(), Prefix("foo")); |
| 121 | embedding::ShrinkArgs shrink_args; |
| 122 | shrink_args.global_step = 1; |
| 123 | variable->Save("var/part_0", Prefix("foo"), &writer, shrink_args); |
| 124 | TF_ASSERT_OK(writer.Finish()); |
| 125 | |
| 126 | { |
| 127 | BundleReader reader(Env::Default(), Prefix("foo")); |
| 128 | TF_ASSERT_OK(reader.status()); |
| 129 | EXPECT_EQ( |
| 130 | AllTensorKeys(&reader), |
| 131 | std::vector<string>({"var/part_0-freqs", "var/part_0-freqs_filtered", "var/part_0-keys", |
| 132 | "var/part_0-keys_filtered", "var/part_0-partition_filter_offset", |
| 133 | "var/part_0-partition_offset", "var/part_0-values", |
| 134 | "var/part_0-versions", "var/part_0-versions_filtered"})); |
| 135 | { |
| 136 | string key = "var/part_0-keys"; |
| 137 | EXPECT_TRUE(reader.Contains(key)); |
| 138 | // Tests for LookupDtypeAndShape(). |
| 139 | DataType dtype; |
| 140 | TensorShape shape; |
| 141 | TF_ASSERT_OK(reader.LookupDtypeAndShape(key, &dtype, &shape)); |
| 142 | // Tests for Lookup(), checking tensor contents. |
| 143 | Tensor val(dtype, TensorShape{0}); |
| 144 | TF_ASSERT_OK(reader.Lookup(key, &val)); |
| 145 | LOG(INFO) << "read keys:" << val.DebugString(); |
| 146 | } |
| 147 | { |
| 148 | string key = "var/part_0-values"; |
| 149 | EXPECT_TRUE(reader.Contains(key)); |
| 150 | // Tests for LookupDtypeAndShape(). |
| 151 | DataType dtype; |
| 152 | TensorShape shape; |
| 153 | TF_ASSERT_OK(reader.LookupDtypeAndShape(key, &dtype, &shape)); |
| 154 | // Tests for Lookup(), checking tensor contents. |
| 155 | Tensor val(dtype, TensorShape{0, value_size}); |
| 156 | TF_ASSERT_OK(reader.Lookup(key, &val)); |
| 157 | LOG(INFO) << "read values:" << val.DebugString(); |
| 158 | } |
| 159 | { |
| 160 | string key = "var/part_0-versions"; |
| 161 | EXPECT_TRUE(reader.Contains(key)); |
| 162 | // Tests for LookupDtypeAndShape(). |
| 163 | DataType dtype; |
| 164 | TensorShape shape; |
| 165 | TF_ASSERT_OK(reader.LookupDtypeAndShape(key, &dtype, &shape)); |
| 166 | // Tests for Lookup(), checking tensor contents. |
| 167 | Tensor val(dtype, TensorShape{0}); |
nothing calls this directly
no test coverage detected