TensorFlow源码分析(2):ConstantOp类的构造函数

本文深入探讨了TensorFlow中ConstantOp类的构造函数,主要逻辑包括:调用父类OpKernel的初始化方法,创建并初始化Tensor对象,将TensorProto转换为Tensor,以及进行类型检查确保一致。同时,解释了OP_REQUIRES_OK和OP_REQUIRES宏的作用,以及它们如何利用编译优化提升性能。
摘要由CSDN通过智能技术生成

文章(1)中,我们说到TensorFlow的操作类中,最重要的两个函数是构造函数和Compute函数。这篇文章,先介绍ConstantOp类的构造函数。它定义在tensorflow/core/kernels/constant_op.cc文件中。

ConstantOp::ConstantOp(OpKernelConstruction* ctx)
    : OpKernel(ctx, StripTensorDataFromNodeDef(ctx)),
      tensor_(ctx->output_type(0)) {
  const TensorProto* proto = nullptr;
  OP_REQUIRES_OK(ctx, ctx->GetAttr("value", &proto));
  OP_REQUIRES_OK(ctx, ctx->device()->MakeTensorFromProto(
                          *proto, AllocatorAttributes(), &tensor_));
  OP_REQUIRES(
      ctx, ctx->output_type(0) == tensor_.dtype(),
      errors::InvalidArgument("Type mismatch between value (",
                              DataTypeString(tensor_.dtype()), ") and dtype (",
                              DataTypeString(ctx->output_type(0)), ")"));
}
</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值