TensorFlow源代码的call-stacktrace?

时间:2016-08-30 03:14:46

标签: machine-learning nlp computer-vision tensorflow deep-learning

我想学习TensorFlow很长一段时间,所以我想阅读它的源代码,但一开始。例如:

one of TF function

我无法找到更深层次的功能。

函数Shape在哪里计算?

1 个答案:

答案 0 :(得分:1)

您展示的代码片段是自动生成的代码片段,可为图表添加"Shape" 操作"Shape"的参数中的字符串_op_def_lib.apply_op()确定节点的操作类型。标准操作类型在C ++源代码中注册,位于TensorFlow源代码的tensorflow/core/ops/目录中。特别是,"Shape"操作已在tensorflow/core/ops/array_ops.cc中注册。这些注册用于定义每个操作的输入,attrs和输出的类型,并从这些注册生成Python包装。

第一次运行包含该节点的子图(即调用tf.Session.run()时)时,TensorFlow将查找在特定设备上实现操作的相应内核。 (例如,通常有单独的内核用于CPU和GPU的操作实现。)标准内核实现在C ++源代码中注册,在TensorFlow源代码的tensorflow/core/kernels/目录中。特别是,"Shape"内核已在tensorflow/core/kernels/shape_ops.cc中注册。内核注册命名一个实现内核的类,它必须是tensorflow::OpKernel的子类,在本例中是tensorflow::ShapeOp类。当子图第一次运行时调用构造函数,并且每次运行操作时都会调用Compute()方法。