| 383 | } |
| 384 | |
| 385 | std::vector<Tensor> SqueezeGrad(const Tensor& x, const Tensor& dy) { |
| 386 | auto T = DT_FLOAT; |
| 387 | auto gdef = test::function::GDef( |
| 388 | {f::NDef("x", "Placeholder", {}, {{"dtype", T}}), |
| 389 | f::NDef("dy", "Placeholder", {}, {{"dtype", T}}), |
| 390 | f::NDef("dx", "SymbolicGradient", {"x", "dy"}, |
| 391 | {{"f", FDH::FunctionRef("Squeeze", {{"T", T}})}, |
| 392 | {"Tin", DataTypeSlice{T, T}}, |
| 393 | {"Tout", DataTypeSlice{T}}})}); |
| 394 | VLOG(1) << DebugStringWhole(gdef); |
| 395 | auto sess = NewSession(); |
| 396 | TF_CHECK_OK(sess->Create(gdef)); |
| 397 | std::vector<Tensor> out; |
| 398 | TF_CHECK_OK(sess->Run({{"x:0", x}, {"dy:0", dy}}, {"dx:0"}, {}, &out)); |
| 399 | CHECK_EQ(out.size(), 1); |
| 400 | TF_CHECK_OK(sess->Close()); |
| 401 | return out; |
| 402 | } |
| 403 | |
| 404 | TEST(ArrayGradTest, SqueezeGrad) { |
| 405 | Tensor x(DT_FLOAT, {2, 1, 3}); |
no test coverage detected