aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/graph/graph_constructor_test.cc
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <gardener@tensorflow.org>2017-06-28 09:36:53 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2017-06-28 09:41:22 -0700
commit17c5907a0f35cc2644737478137ed2b558998da9 (patch)
tree13de773feaabb8a6a10136e0956340124e5160e5 /tensorflow/core/graph/graph_constructor_test.cc
parent184a5fd8da87f79f46c75c716a802863aee28a02 (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.cc18
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) {