TensorFlow的C++之路(1):认识Scope

需包含头文件,和两个namespace声明

# include "scope.h"
using namespace tensorflow;
using namespace ops;

该类的主要成员(我们当然只关心调用pb文件完成预测的任务,至于读取图的某一个节点,自然是不关心的,至少在C++端不会在意这个,那是用Python该做的事情),我们主要会使用到的成员函数有:

Scope::NewRootScope(); 创建一个根空间,意味着所有的张量的名字都有一个前缀,根空间的前缀是空的;
Scope::NewSubScope(const &string);

下面看两个例子:
头文件我设置为:

#pragma once
#define COMPILER_MSVC
#define NOMINMAX

#include "scope.h"
#include <iostream>
#include "tensorflow/cc/client/client_session.h"
#include "tensorflow/cc/ops/standard_ops.h"
#include "tensorflow/core/framework/tensor.h"

using namespace tensorflow; 
using namespace ops;

void testScope();
void testScopeDemo();

源文件如下

#include "scope.h"

void testScope()
{
	Scope root = Scope::NewRootScope();
	auto c1 = Const(root, { { 1,1 } });
	auto m = MatMul(root, c1, { { 41 },{ 1 } });
	GraphDef gdef;
	Status s = root.ToGraphDef(&gdef);
	if (!s.ok()) {
		std::cout << "error" << std::endl;
	}
	else {
		std::cout << "successfully generate graph!" << std::endl;
	}
}
void testScopeDemo()
{
	Scope root = Scope::NewRootScope();
	Scope linear = root.NewSubScope("linear");
	// W will be named "linear/W"
	auto W = Variable(linear.WithOpName("W"), { 2,2 },DT_FLOAT);
	// b will be named "linear/b"
	auto b = Variable(linear.WithOpName("b"), { 2,2 }, DT_FLOAT);
	auto x = Const(linear, { 1 });
	auto m = MatMul(linear, x, W);
	auto r = BiasAdd(linear,m, b);


}

在第一个函数testScope中,先创建一个root空间。之后所有的operation,第一个参数都是这个root变量。
在第二个函数testScopeDemo中,先创建一个root空间,在创建一个子空间,叫做‘linear’。在linear之下创建的所有张量,其名称的前缀都是“linear/”。包括Variable和Const生成的张量,以及operation操作输出的张量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值