Skip to content

Commit 67734a1

Browse files
committed
Merge branch 'r0.10' of github.com:tensorflow/tensorflow into r0.10
2 parents 3c5774d + 362967e commit 67734a1

File tree

37 files changed

+2750
-864
lines changed

37 files changed

+2750
-864
lines changed

tensorflow/c/c_api.cc

Lines changed: 140 additions & 129 deletions
Large diffs are not rendered by default.

tensorflow/c/c_api.h

Lines changed: 156 additions & 136 deletions
Large diffs are not rendered by default.

tensorflow/c/c_api_test.cc

Lines changed: 92 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -202,32 +202,33 @@ static TF_Tensor* Int32Tensor(int32 v) {
202202
&Int32Deallocator, nullptr);
203203
}
204204

205-
TF_Node* Placeholder(TF_Graph* graph, TF_Status* s) {
206-
TF_NodeDescription* desc = TF_NewNode(graph, "Placeholder", "feed");
205+
TF_Operation* Placeholder(TF_Graph* graph, TF_Status* s) {
206+
TF_OperationDescription* desc = TF_NewOperation(graph, "Placeholder", "feed");
207207
TF_SetAttrType(desc, "dtype", TF_INT32);
208-
return TF_FinishNode(desc, s);
208+
return TF_FinishOperation(desc, s);
209209
}
210210

211-
TF_Node* ScalarConst(int32 v, TF_Graph* graph, TF_Status* s) {
212-
TF_NodeDescription* desc = TF_NewNode(graph, "Const", "scalar");
211+
TF_Operation* ScalarConst(int32 v, TF_Graph* graph, TF_Status* s) {
212+
TF_OperationDescription* desc = TF_NewOperation(graph, "Const", "scalar");
213213
TF_SetAttrTensor(desc, "value", Int32Tensor(v), s);
214214
if (TF_GetCode(s) != TF_OK) return nullptr;
215215
TF_SetAttrType(desc, "dtype", TF_INT32);
216-
return TF_FinishNode(desc, s);
216+
return TF_FinishOperation(desc, s);
217217
}
218218

219-
TF_Node* Add(TF_Node* l, TF_Node* r, TF_Graph* graph, TF_Status* s) {
220-
TF_NodeDescription* desc = TF_NewNode(graph, "AddN", "add");
219+
TF_Operation* Add(TF_Operation* l, TF_Operation* r, TF_Graph* graph,
220+
TF_Status* s) {
221+
TF_OperationDescription* desc = TF_NewOperation(graph, "AddN", "add");
221222
TF_Port add_inputs[2] = {{l, 0}, {r, 0}};
222223
TF_AddInputList(desc, add_inputs, 2);
223-
return TF_FinishNode(desc, s);
224+
return TF_FinishOperation(desc, s);
224225
}
225226

226-
TF_Node* Neg(TF_Node* n, TF_Graph* graph, TF_Status* s) {
227-
TF_NodeDescription* desc = TF_NewNode(graph, "Neg", "neg");
227+
TF_Operation* Neg(TF_Operation* n, TF_Graph* graph, TF_Status* s) {
228+
TF_OperationDescription* desc = TF_NewOperation(graph, "Neg", "neg");
228229
TF_Port neg_input = {n, 0};
229230
TF_AddInput(desc, neg_input);
230-
return TF_FinishNode(desc, s);
231+
return TF_FinishOperation(desc, s);
231232
}
232233

233234
bool IsPlaceholder(const NodeDef& node_def) {
@@ -318,10 +319,10 @@ bool GetGraphDef(TF_Graph* graph, GraphDef* graph_def) {
318319
return ret;
319320
}
320321

321-
bool GetNodeDef(TF_Node* node, NodeDef* node_def) {
322+
bool GetNodeDef(TF_Operation* oper, NodeDef* node_def) {
322323
TF_Status* s = TF_NewStatus();
323324
TF_Buffer* buffer = TF_NewBuffer();
324-
TF_NodeToNodeDef(node, buffer, s);
325+
TF_OperationToNodeDef(oper, buffer, s);
325326
bool ret = TF_GetCode(s) == TF_OK;
326327
EXPECT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
327328
if (ret) ret = node_def->ParseFromArray(buffer->data, buffer->length);
@@ -330,10 +331,10 @@ bool GetNodeDef(TF_Node* node, NodeDef* node_def) {
330331
return ret;
331332
}
332333

333-
bool GetAttrValue(TF_Node* node, const char* attr_name,
334+
bool GetAttrValue(TF_Operation* oper, const char* attr_name,
334335
tensorflow::AttrValue* attr_value, TF_Status* s) {
335336
TF_Buffer* buffer = TF_NewBuffer();
336-
TF_NodeGetAttrValueProto(node, attr_name, buffer, s);
337+
TF_OperationGetAttrValueProto(oper, attr_name, buffer, s);
337338
bool ret = TF_GetCode(s) == TF_OK;
338339
if (ret) ret = attr_value->ParseFromArray(buffer->data, buffer->length);
339340
TF_DeleteBuffer(buffer);
@@ -344,82 +345,83 @@ TEST(CAPI, Graph) {
344345
TF_Status* s = TF_NewStatus();
345346
TF_Graph* graph = TF_NewGraph();
346347

347-
// Make a placeholder node.
348-
TF_Node* feed = Placeholder(graph, s);
348+
// Make a placeholder oper.
349+
TF_Operation* feed = Placeholder(graph, s);
349350
ASSERT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
350351

351-
// Test TF_Node*() query functions.
352-
EXPECT_EQ(string("feed"), string(TF_NodeName(feed)));
353-
EXPECT_EQ(string("Placeholder"), string(TF_NodeOpType(feed)));
354-
EXPECT_EQ(string(""), string(TF_NodeDevice(feed)));
355-
EXPECT_EQ(1, TF_NodeNumOutputs(feed));
356-
EXPECT_EQ(TF_INT32, TF_NodeOutputType(TF_Port{feed, 0}));
357-
EXPECT_EQ(1, TF_NodeOutputListLength(feed, "output", s));
352+
// Test TF_Operation*() query functions.
353+
EXPECT_EQ(string("feed"), string(TF_OperationName(feed)));
354+
EXPECT_EQ(string("Placeholder"), string(TF_OperationOpType(feed)));
355+
EXPECT_EQ(string(""), string(TF_OperationDevice(feed)));
356+
EXPECT_EQ(1, TF_OperationNumOutputs(feed));
357+
EXPECT_EQ(TF_INT32, TF_OperationOutputType(TF_Port{feed, 0}));
358+
EXPECT_EQ(1, TF_OperationOutputListLength(feed, "output", s));
358359
ASSERT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
359-
EXPECT_EQ(0, TF_NodeNumInputs(feed));
360-
EXPECT_EQ(0, TF_NodeOutputNumConsumers(TF_Port{feed, 0}));
361-
EXPECT_EQ(0, TF_NodeNumControlInputs(feed));
362-
EXPECT_EQ(0, TF_NodeNumControlOutputs(feed));
360+
EXPECT_EQ(0, TF_OperationNumInputs(feed));
361+
EXPECT_EQ(0, TF_OperationOutputNumConsumers(TF_Port{feed, 0}));
362+
EXPECT_EQ(0, TF_OperationNumControlInputs(feed));
363+
EXPECT_EQ(0, TF_OperationNumControlOutputs(feed));
363364

364365
tensorflow::AttrValue attr_value;
365366
ASSERT_TRUE(GetAttrValue(feed, "dtype", &attr_value, s)) << TF_Message(s);
366367
EXPECT_EQ(attr_value.type(), tensorflow::DT_INT32);
367368

368-
// Test not found errors in TF_Node*() query functions.
369-
EXPECT_EQ(-1, TF_NodeOutputListLength(feed, "bogus", s));
369+
// Test not found errors in TF_Operation*() query functions.
370+
EXPECT_EQ(-1, TF_OperationOutputListLength(feed, "bogus", s));
370371
EXPECT_EQ(TF_INVALID_ARGUMENT, TF_GetCode(s));
371372

372373
ASSERT_FALSE(GetAttrValue(feed, "missing", &attr_value, s));
373-
EXPECT_EQ(string("Node has no attr named 'missing'."), string(TF_Message(s)));
374+
EXPECT_EQ(string("Operation has no attr named 'missing'."),
375+
string(TF_Message(s)));
374376

375-
// Make a constant node with the scalar "3".
376-
TF_Node* three = ScalarConst(3, graph, s);
377+
// Make a constant oper with the scalar "3".
378+
TF_Operation* three = ScalarConst(3, graph, s);
377379
ASSERT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
378380

379-
// Add node.
380-
TF_Node* add = Add(feed, three, graph, s);
381+
// Add oper.
382+
TF_Operation* add = Add(feed, three, graph, s);
381383
ASSERT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
382384

383-
// Test TF_Node*() query functions.
384-
EXPECT_EQ(string("add"), string(TF_NodeName(add)));
385-
EXPECT_EQ(string("AddN"), string(TF_NodeOpType(add)));
386-
EXPECT_EQ(string(""), string(TF_NodeDevice(add)));
387-
EXPECT_EQ(1, TF_NodeNumOutputs(add));
388-
EXPECT_EQ(TF_INT32, TF_NodeOutputType(TF_Port{add, 0}));
389-
EXPECT_EQ(1, TF_NodeOutputListLength(add, "sum", s));
385+
// Test TF_Operation*() query functions.
386+
EXPECT_EQ(string("add"), string(TF_OperationName(add)));
387+
EXPECT_EQ(string("AddN"), string(TF_OperationOpType(add)));
388+
EXPECT_EQ(string(""), string(TF_OperationDevice(add)));
389+
EXPECT_EQ(1, TF_OperationNumOutputs(add));
390+
EXPECT_EQ(TF_INT32, TF_OperationOutputType(TF_Port{add, 0}));
391+
EXPECT_EQ(1, TF_OperationOutputListLength(add, "sum", s));
390392
ASSERT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
391-
EXPECT_EQ(2, TF_NodeNumInputs(add));
392-
EXPECT_EQ(2, TF_NodeInputListLength(add, "inputs", s));
393+
EXPECT_EQ(2, TF_OperationNumInputs(add));
394+
EXPECT_EQ(2, TF_OperationInputListLength(add, "inputs", s));
393395
ASSERT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
394-
EXPECT_EQ(TF_INT32, TF_NodeInputType(TF_Port{add, 0}));
395-
EXPECT_EQ(TF_INT32, TF_NodeInputType(TF_Port{add, 1}));
396-
TF_Port add_in_0 = TF_NodeInput(TF_Port{add, 0});
397-
EXPECT_EQ(feed, add_in_0.node);
396+
EXPECT_EQ(TF_INT32, TF_OperationInputType(TF_Port{add, 0}));
397+
EXPECT_EQ(TF_INT32, TF_OperationInputType(TF_Port{add, 1}));
398+
TF_Port add_in_0 = TF_OperationInput(TF_Port{add, 0});
399+
EXPECT_EQ(feed, add_in_0.oper);
398400
EXPECT_EQ(0, add_in_0.index);
399-
TF_Port add_in_1 = TF_NodeInput(TF_Port{add, 1});
400-
EXPECT_EQ(three, add_in_1.node);
401+
TF_Port add_in_1 = TF_OperationInput(TF_Port{add, 1});
402+
EXPECT_EQ(three, add_in_1.oper);
401403
EXPECT_EQ(0, add_in_1.index);
402-
EXPECT_EQ(0, TF_NodeOutputNumConsumers(TF_Port{add, 0}));
403-
EXPECT_EQ(0, TF_NodeNumControlInputs(add));
404-
EXPECT_EQ(0, TF_NodeNumControlOutputs(add));
404+
EXPECT_EQ(0, TF_OperationOutputNumConsumers(TF_Port{add, 0}));
405+
EXPECT_EQ(0, TF_OperationNumControlInputs(add));
406+
EXPECT_EQ(0, TF_OperationNumControlOutputs(add));
405407

406408
ASSERT_TRUE(GetAttrValue(add, "T", &attr_value, s)) << TF_Message(s);
407409
EXPECT_EQ(attr_value.type(), tensorflow::DT_INT32);
408410
ASSERT_TRUE(GetAttrValue(add, "N", &attr_value, s)) << TF_Message(s);
409411
EXPECT_EQ(attr_value.i(), 2);
410412

411-
// Placeholder node now has a consumer.
412-
ASSERT_EQ(1, TF_NodeOutputNumConsumers(TF_Port{feed, 0}));
413+
// Placeholder oper now has a consumer.
414+
ASSERT_EQ(1, TF_OperationOutputNumConsumers(TF_Port{feed, 0}));
413415
TF_Port feed_port;
414-
EXPECT_EQ(1, TF_NodeOutputConsumers(TF_Port{feed, 0}, &feed_port, 1));
415-
EXPECT_EQ(add, feed_port.node);
416+
EXPECT_EQ(1, TF_OperationOutputConsumers(TF_Port{feed, 0}, &feed_port, 1));
417+
EXPECT_EQ(add, feed_port.oper);
416418
EXPECT_EQ(0, feed_port.index);
417419

418-
// The scalar const node also has a consumer.
419-
ASSERT_EQ(1, TF_NodeOutputNumConsumers(TF_Port{three, 0}));
420+
// The scalar const oper also has a consumer.
421+
ASSERT_EQ(1, TF_OperationOutputNumConsumers(TF_Port{three, 0}));
420422
TF_Port three_port;
421-
EXPECT_EQ(1, TF_NodeOutputConsumers(TF_Port{three, 0}, &three_port, 1));
422-
EXPECT_EQ(add, three_port.node);
423+
EXPECT_EQ(1, TF_OperationOutputConsumers(TF_Port{three, 0}, &three_port, 1));
424+
EXPECT_EQ(add, three_port.oper);
423425
EXPECT_EQ(1, three_port.index);
424426

425427
// Serialize to GraphDef.
@@ -448,8 +450,8 @@ TEST(CAPI, Graph) {
448450
EXPECT_TRUE(found_scalar_const);
449451
EXPECT_TRUE(found_add);
450452

451-
// Add another node to the graph.
452-
TF_Node* neg = Neg(add, graph, s);
453+
// Add another oper to the graph.
454+
TF_Operation* neg = Neg(add, graph, s);
453455
ASSERT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
454456

455457
// Serialize to NodeDef.
@@ -469,13 +471,13 @@ TEST(CAPI, Graph) {
469471
EXPECT_EQ(ProtoDebugString(graph_def), ProtoDebugString(graph_def2));
470472

471473
// Look up some nodes by name.
472-
TF_Node* neg2 = TF_GraphNodeByName(graph, "neg");
474+
TF_Operation* neg2 = TF_GraphOperationByName(graph, "neg");
473475
EXPECT_TRUE(neg == neg2);
474476
NodeDef node_def2;
475477
ASSERT_TRUE(GetNodeDef(neg2, &node_def2));
476478
EXPECT_EQ(ProtoDebugString(node_def), ProtoDebugString(node_def2));
477479

478-
TF_Node* feed2 = TF_GraphNodeByName(graph, "feed");
480+
TF_Operation* feed2 = TF_GraphOperationByName(graph, "feed");
479481
EXPECT_TRUE(feed == feed2);
480482
ASSERT_TRUE(GetNodeDef(feed, &node_def));
481483
ASSERT_TRUE(GetNodeDef(feed2, &node_def2));
@@ -487,22 +489,22 @@ TEST(CAPI, Graph) {
487489
found_add = false;
488490
bool found_neg = false;
489491
size_t pos = 0;
490-
TF_Node* node;
491-
while ((node = TF_GraphNextNode(graph, &pos)) != nullptr) {
492-
if (node == feed) {
492+
TF_Operation* oper;
493+
while ((oper = TF_GraphNextOperation(graph, &pos)) != nullptr) {
494+
if (oper == feed) {
493495
EXPECT_FALSE(found_placeholder);
494496
found_placeholder = true;
495-
} else if (node == three) {
497+
} else if (oper == three) {
496498
EXPECT_FALSE(found_scalar_const);
497499
found_scalar_const = true;
498-
} else if (node == add) {
500+
} else if (oper == add) {
499501
EXPECT_FALSE(found_add);
500502
found_add = true;
501-
} else if (node == neg) {
503+
} else if (oper == neg) {
502504
EXPECT_FALSE(found_neg);
503505
found_neg = true;
504506
} else {
505-
ASSERT_TRUE(GetNodeDef(node, &node_def));
507+
ASSERT_TRUE(GetNodeDef(oper, &node_def));
506508
ADD_FAILURE() << "Unexpected Node: " << ProtoDebugString(node_def);
507509
}
508510
}
@@ -532,7 +534,7 @@ class CSessionWithGraph {
532534
}
533535

534536
void SetInputs(
535-
std::initializer_list<std::pair<TF_Node*, TF_Tensor*>> inputs) {
537+
std::initializer_list<std::pair<TF_Operation*, TF_Tensor*>> inputs) {
536538
DeleteInputValues();
537539
inputs_.clear();
538540
for (const auto& p : inputs) {
@@ -541,17 +543,17 @@ class CSessionWithGraph {
541543
}
542544
}
543545

544-
void SetOutputs(std::initializer_list<TF_Node*> outputs) {
546+
void SetOutputs(std::initializer_list<TF_Operation*> outputs) {
545547
ResetOutputValues();
546548
outputs_.clear();
547-
for (TF_Node* o : outputs) {
549+
for (TF_Operation* o : outputs) {
548550
outputs_.emplace_back(TF_Port{o, 0});
549551
}
550552
}
551553

552-
void SetTargets(std::initializer_list<TF_Node*> targets) {
554+
void SetTargets(std::initializer_list<TF_Operation*> targets) {
553555
targets_.clear();
554-
for (TF_Node* t : targets) {
556+
for (TF_Operation* t : targets) {
555557
targets_.emplace_back(t);
556558
}
557559
}
@@ -572,7 +574,8 @@ class CSessionWithGraph {
572574
TF_Tensor** output_values_ptr =
573575
output_values_.empty() ? nullptr : &output_values_[0];
574576

575-
TF_Node* const* targets_ptr = targets_.empty() ? nullptr : &targets_[0];
577+
TF_Operation* const* targets_ptr =
578+
targets_.empty() ? nullptr : &targets_[0];
576579

577580
TF_SessionRun(session_, nullptr, inputs_ptr, input_values_ptr,
578581
inputs_.size(), outputs_ptr, output_values_ptr,
@@ -615,23 +618,23 @@ class CSessionWithGraph {
615618
std::vector<TF_Tensor*> input_values_;
616619
std::vector<TF_Port> outputs_;
617620
std::vector<TF_Tensor*> output_values_;
618-
std::vector<TF_Node*> targets_;
621+
std::vector<TF_Operation*> targets_;
619622
};
620623

621624
TEST(CAPI, SessionWithGraph) {
622625
TF_Status* s = TF_NewStatus();
623626
TF_Graph* graph = TF_NewGraph();
624627

625-
// Make a placeholder node.
626-
TF_Node* feed = Placeholder(graph, s);
628+
// Make a placeholder operation.
629+
TF_Operation* feed = Placeholder(graph, s);
627630
ASSERT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
628631

629-
// Make a constant node with the scalar "2".
630-
TF_Node* two = ScalarConst(2, graph, s);
632+
// Make a constant operation with the scalar "2".
633+
TF_Operation* two = ScalarConst(2, graph, s);
631634
ASSERT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
632635

633-
// Add node.
634-
TF_Node* add = Add(feed, two, graph, s);
636+
// Add operation.
637+
TF_Operation* add = Add(feed, two, graph, s);
635638
ASSERT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
636639

637640
// Create a session for this graph.
@@ -652,11 +655,11 @@ TEST(CAPI, SessionWithGraph) {
652655
static_cast<tensorflow::int32*>(TF_TensorData(out));
653656
EXPECT_EQ(3 + 2, *output_contents);
654657

655-
// Add another node to the graph.
656-
TF_Node* neg = Neg(add, graph, s);
658+
// Add another operation to the graph.
659+
TF_Operation* neg = Neg(add, graph, s);
657660
ASSERT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
658661

659-
// Run up to the new node.
662+
// Run up to the new operation.
660663
csession.SetInputs({{feed, Int32Tensor(7)}});
661664
csession.SetOutputs({neg});
662665
csession.Run(s);

tensorflow/examples/tutorials/word2vec/word2vec_basic.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,4 +243,4 @@ def plot_with_labels(low_dim_embs, labels, filename='tsne.png'):
243243
plot_with_labels(low_dim_embs, labels)
244244

245245
except ImportError:
246-
print("Please install sklearn and matplotlib to visualize embeddings.")
246+
print("Please install sklearn, matplotlib, and scipy to visualize embeddings.")

tensorflow/models/embedding/word2vec.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ def forward(self, examples, labels):
248248
true_logits = tf.reduce_sum(tf.mul(example_emb, true_w), 1) + true_b
249249

250250
# Sampled logits: [batch_size, num_sampled]
251-
# We replicate sampled noise lables for all examples in the batch
251+
# We replicate sampled noise labels for all examples in the batch
252252
# using the matmul.
253253
sampled_b_vec = tf.reshape(sampled_b, [opts.num_samples])
254254
sampled_logits = tf.matmul(example_emb,

tensorflow/tensorboard/TAG

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
23
1+
25

0 commit comments

Comments
 (0)