答案 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()
方法。