diff options
author | A. Unique TensorFlower <gardener@tensorflow.org> | 2017-06-28 09:36:53 -0700 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2017-06-28 09:41:22 -0700 |
commit | 17c5907a0f35cc2644737478137ed2b558998da9 (patch) | |
tree | 13de773feaabb8a6a10136e0956340124e5160e5 /tensorflow/core/graph/graph_constructor_test.cc | |
parent | 184a5fd8da87f79f46c75c716a802863aee28a02 (diff) |
Only wait for one non-control input for Merge nodes if there is a loop. This is
to enable the propagation of shapes for conditionals, which also include Merge
nodes.
PiperOrigin-RevId: 160417770
Diffstat (limited to 'tensorflow/core/graph/graph_constructor_test.cc')
-rw-r--r-- | tensorflow/core/graph/graph_constructor_test.cc | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/tensorflow/core/graph/graph_constructor_test.cc b/tensorflow/core/graph/graph_constructor_test.cc index 8abf21235e..b8d1879fa0 100644 --- a/tensorflow/core/graph/graph_constructor_test.cc +++ b/tensorflow/core/graph/graph_constructor_test.cc @@ -1871,25 +1871,29 @@ TEST_F(GraphConstructorTest, ImportGraphDef_ControlDepsWithCycle) { // new_input opts.input_map[TensorId("new_input", 0)] = TensorId("input", 0); - // ImportGraphDef only allows backedges into merge nodes (since backedges are - // only expected in while loops) + // ImportGraphDef only allows backedges into merge nodes that are part of + // while loops (since backedges are only expected in while loops) ExpectOK( R"EOF( node { name: 'new_input' op: 'TestInput' } - node { name: 'merge' op: 'Merge' input: [ 'new_input:0', 't1:0' ] + node { name: 'merge' op: 'Merge' input: [ 'new_input:0', 'next:0' ] attr { key: "N" value: { i: 2 } } attr { key: "T" value: { type: DT_FLOAT } } } node { name: 't1' op: 'TestMul' input: [ 'merge:0', 'merge:0' ] } + node { name: 'next' op: 'NextIteration' input: ['t1:0'] + attr { key: "T" value: { type: DT_FLOAT } } } )EOF", opts, &refiner); EXPECT_TRUE(HasNode("new_input")); EXPECT_TRUE(HasNode("merge")); EXPECT_TRUE(HasNode("t1")); + EXPECT_TRUE(HasNode("next")); // Sanity check we created cycle EXPECT_TRUE(HasEdge("merge", 0, "t1", 0)); - EXPECT_TRUE(HasEdge("t1", 0, "merge", 1)); + EXPECT_TRUE(HasEdge("t1", 0, "next", 0)); + EXPECT_TRUE(HasEdge("next", 0, "merge", 1)); // Test that control dep was added to exactly one node of cycle EXPECT_TRUE(HasControlEdge("W1", "merge")); @@ -1899,13 +1903,17 @@ TEST_F(GraphConstructorTest, ImportGraphDef_ControlDepsWithCycle) { Node* merge = FindNode("merge"); ASSERT_EQ(merge->requested_inputs().size(), 3); EXPECT_EQ(merge->requested_inputs()[0], "input:0"); - EXPECT_EQ(merge->requested_inputs()[1], "t1:0"); + EXPECT_EQ(merge->requested_inputs()[1], "next:0"); EXPECT_EQ(merge->requested_inputs()[2], "^W1"); Node* t1 = FindNode("t1"); ASSERT_EQ(t1->requested_inputs().size(), 2); EXPECT_EQ(t1->requested_inputs()[0], "merge:0"); EXPECT_EQ(t1->requested_inputs()[1], "merge:0"); + + Node* next = FindNode("next"); + ASSERT_EQ(next->requested_inputs().size(), 1); + EXPECT_EQ(next->requested_inputs()[0], "t1:0"); } TEST_F(GraphConstructorTest, ImportGraphDef_ControlDepsErrors) { |