VARP
class VARP
枚举类
Dimensionformat
enum Dimensionformat {
NHWC,
NC4HW4,
NCHW
};
value | name | 说明 |
---|---|---|
0 | NHWC |
|
1 | NC4HW4 |
|
2 | NCHW |
InputType
enum InputType {
INPUT = 0,
CONSTANT = 1,
TRAINABLE = 2,
};
value | name | 说明 |
---|---|---|
0 | INPUT |
默认输入变量 |
1 | CONSTANT |
常量 |
2 | TRAINABLE |
可训练变量 |
成员函数
VARP
VARP(std::shared_ptr<Variable> c) {
mContent = std::move(c);
};
调用移动构造函数,将c的对象移动至mContent对象
参数:
c
Variable类型变量
返回:void
VARP
VARP(Variable* c) {
mContent.reset(c);
};
重置mContent对象中的Variable对象
参数:
c
Variable类型变量
返回:void
get
Variable* get() const {
return mContent.get();
};
获取mContent的Variable对象
参数:无
返回:Variable对象
VARP
VARP(const VARP& var) {
mContent = var.mContent;
};
把var的content对象赋值给mContent变量
参数:
var
输入变量
返回:void
VARP
VARP(VARP&& var) {
mContent = std::move(var.mContent);
};
调用移动构造函数,将var.mContent的对象移动至mContent对象
参数:
var
输入变量
返回:void
operator+
VARP operator+(VARP var) const;
VARP类型对象加法计算
参数:
var
输入变量
返回:VARP对象
operator-
VARP operator-(VARP var) const;
VARP类型对象减法计算
参数:
var
输入变量
返回:VARP对象
operator*
VARP operator*(VARP var) const;
VARP类型对象乘法计算
参数:
var
输入变量
返回:VARP对象
operator/
VARP operator/(VARP var) const;
VARP类型对象除法计算
参数:
var
输入变量
返回:VARP对象
mean
VARP mean(INTS dims) const;
计算均值
参数:
dims
一个向量
返回:VARP对象
sum
VARP sum(INTS dims) const;
计算和
参数:
dims
一个向量
返回:VARP对象
operator==
bool operator==(const VARP& var) const {
return var.mContent == mContent;
};
重载相等运算符,判断var.mContent和mContent是否相等
参数:
var
输入变量
返回:true/false
operator<
bool operator<(const VARP& var) const {
return mContent < var.mContent;
};
重载小于运算符,判断mContent是否小于var.mContent
参数:
var
输入变量
返回:true/false
operator<=
bool operator<=(const VARP& var) const {
return mContent <= var.mContent;
};
重载小于等于运算符,判断mContent是否小于等于var.mContent
参数:
var
输入变量
返回:true/false
operator=
VARP& operator=(const VARP& var) {
mContent = var.mContent;
return *this;
};
拷贝var.mContent对象到mContent
参数:
var
输入变量
返回:当前对象的拷贝
operator=
VARP& operator=(Variable* var) {
mContent.reset(var);
return *this;
};
重置mContent对象中的Variable对象,并拷贝
参数:
var
输入变量
返回:当前对象的拷贝
operator->
Variable* operator->() const {
return mContent.get();
};
获取mContent对象的值
参数:无
返回:Variable对象
fix
bool fix(InputType type) const;
朝零方向取整
参数:
type
输入数据类型
返回:true/false
operator==
inline bool operator==(Variable* src, VARP dst) {
return src == dst.get();
};
重载相等运算符,判断src和dst.get()是否相等
参数:
src
Variable类型输入变量dst
VARP类型输入变量
返回:true/false
operator!=
inline bool operator!=(Variable* src, VARP dst) {
return src != dst.get();
};
重载不相等运算符,判断src和dst.get()是否不相等
参数:
src
Variable类型输入变量dst
VARP类型输入变量
返回:true/false
Variable
class Variable
成员函数
name
const std::string& name() const;
获取Variable对象的名称
参数:无
返回:名称
setName
void setName(const std::string& name);
设置名称
参数:
name
名称
返回:void
expr
std::pair<EXPRP, int> expr() const {
return std::make_pair(mFrom, mFromIndex);
};
创建一个EXPRP对象,需要mFrom作为参数,位置为mFromIndex
参数:无
返回:EXPRP对象
getInfo
const Info* getInfo();
获取Variable对象的相关信息
参数:无
返回:如果计算信息错误,返回nullptr
resize
bool resize(INTS dims);
调整Variable对象的大小
参数:
dims
一个向量
返回:true/false
readMap
template <typename T>
const T* readMap() {
return (const T*)readInternal();
};
读取内部信息
参数:无
返回:信息
writeMap
template <typename T>
T* writeMap() {
return (T*)writeInternal();
};
写入内部信息
参数:无
返回:信息
input
bool input(VARP src);
输入信息
参数:
src
输入变量
返回:true/false
replace
static void replace(VARP dst, VARP src);
替换信息
参数:
dst
输入变量src
输入变量
返回:void
create
static VARP create(EXPRP expr, int index = 0);
在index位置创建expr对象
参数:
expr
输入变量index
位置下标,默认为0
返回:VARP对象
load
static std::vector<VARP> load(const char* fileName);
通过文件名加载对象
参数:
fileName
文件名
返回:VARP对象矩阵
loadMap
static std::map<std::string, VARP> loadMap(const char* fileName);
通过文件名读取模型对象
参数:
fileName
文件名
返回:模型对象
load
static std::vector<VARP> load(const uint8_t* buffer, size_t length);
加载存储的,长度为length的模型对象
参数:
buffer
存储数据length
数据长度
返回:模型对象
loadMap
static std::map<std::string, VARP> loadMap(const uint8_t* buffer, size_t length);
读取存储的,长度为length的模型对象
参数:
buffer
存储数据length
数据长度
返回:模型对象
getInputAndOutput
static std::pair<std::map<std::string, VARP>, std::map<std::string, VARP>> getInputAndOutput(const std::map<std::string, VARP>& allVariable);
获取模型输入输出节点
参数:
allVariable
输入变量
返回:模型输入输出节点
mapToSequence
static std::vector<VARP> mapToSequence(const std::map<std::string, VARP>& source);
模型的输出节点及其名称
参数:
source
输入变量
返回:输出节点及其名称
getExecuteOrder
static std::vector<EXPRP> getExecuteOrder(const std::vector<VARP>& output);
获取操作指令
参数:
output
输入变量
返回:指令集
save
static void save(const std::vector<VARP>& vars, const char* fileName);
保存vars到指定位置
参数:
vars
输入变量fileName
文件名
返回:void
save
static std::vector<int8_t> save(const std::vector<VARP>& vars);
保存vars到默认位置
参数:
vars
输入变量
返回:void
save
static void save(const std::vector<VARP>& vars, NetT* dest);
保存vars到dest位置
参数:
vars
输入变量dest
目标地址
返回:void
prepareCompute
static void prepareCompute(const std::vector<VARP>& vars, bool forceCPU = false);
将几个变量打包在一个管道中进行计算
参数:
vars
输入变量forceCPU
是否强制使用CPU,默认为false
返回:void
compute
static void compute(const std::vector<VARP>& vars, bool forceCPU = false);
计算变量
参数:
vars
输入变量forceCPU
是否强制使用CPU,默认为false
返回:void
linkNumber
size_t linkNumber() const;
获取输出信息的size
参数:无
返回:size
toExprs
const std::vector<WeakEXPRP>& toExprs() const;
返回模型对象信息
参数:无
返回:模型对象信息
setExpr
void setExpr(EXPRP expr, int index) {
mFrom = expr;
mFromIndex = index;
};
在index位置设置EXPRP对象
参数:无
返回:EXPRP对象
Expr
class Expr
枚举类
MemoryType
enum MemoryType {
COPY,
MOVE,
REF
};
value | name | 说明 |
---|---|---|
0 | COPY |
拷贝 |
1 | MOVE |
移动 |
2 | REF |
引用 |
成员函数
create
static EXPRP create(Tensor* tensor, bool own = false);
创建一个包含tensor的EXPRP变量
参数:
tensor
输入变量own
默认为false
返回:EXPRP变量
create
static EXPRP create(Variable::Info&& info, const void* ptr, VARP::InputType type, MemoryType copy = COPY);
创建一个包含info对象的EXPRP变量
参数:
info
Variable类型输入变量ptr
目标对象地址type
输入数据类型copy
内存拷贝
返回:EXPRP变量
create
static EXPRP create(const OpT* op, std::vector<VARP> inputs, int outputSize = 1);
创建EXPRP变量
参数:
op
输入变量inputs
输入变量outputSize
输出信息大小,默认为1
返回:EXPRP变量
create
static EXPRP create(std::shared_ptr<BufferStorage> extra, std::vector<VARP>&& inputs, int outputSize = 1);
创建EXPRP变量
参数:
extra
输入变量inputs
输入变量outputSize
输出信息大小,默认为1
返回:EXPRP变量
create
static EXPRP create(std::unique_ptr<OpT>&& op, std::vector<VARP> inputs, int outputSize = 1) {
return create(op.get(), inputs, outputSize);
};
创建EXPRP变量
参数:
op
输入变量inputs
输入变量outputSize
输出信息大小,默认为1
返回:EXPRP变量
setName
void setName(const std::string& name);
设置名称
参数:
name
名称
返回:void
get
const Op* get() const {
return mOp;
};
获取对象信息
参数:无
返回:对象信息
inputs
const std::vector<VARP>& inputs() const {
return mInputs;
};
获取输入节点信息
参数:无
返回:输入节点信息
outputSize
int outputSize() const {
return (int)mOutputNames.size();
};
返回输出节点信息大小
参数:无
返回:size
replace
static void replace(EXPRP oldExpr, EXPRP newExpr);
用newExpr替换oldExpr
参数:
oldExpr
输入变量,源对象newExpr
输入变量,目标对象
返回:void
requireInfo
bool requireInfo();
获取需要的信息
参数:无
返回:信息
visitOutputs
void visitOutputs(const std::function<bool(EXPRP, int)>& visit);
访问输出节点的信息
参数:
visit
访问方法
返回:void
visit
static void visit(EXPRP expr, const std::function<bool(EXPRP)>& before, const std::function<bool(EXPRP)>& after);
访问某一个范围的信息
参数:
expr
输入变量before
before指针after
after指针
返回:void
outputs
const std::vector<WeakEXPRP>& outputs() const {
return mTo;
};
返回输出节点信息
参数:无
返回:信息
~Expr()
析构函数
visited
bool visited() const {
return mVisited;
};
是否已经访问过
参数:无
返回:true/false
setVisited
void setVisited(bool visited) {
mVisited = visited;
};
设置已经被访问
参数:
visited
是否访问
返回:void
name
const std::string& name() const {
return mName;
};
获取名称
参数:无
返回:名称
outputName
const std::string& outputName(int index) {
return mOutputNames[index];
};
输出指定index的名称
参数:
index
下标
返回:名称
inputType
VARP::InputType inputType() const {return mType;};
返回当前输入类型
参数:无
返回:输入类型
outputInfo
Variable::Info* outputInfo(int index) const;
返回指定下标的输出信息
参数:
index
下标值
返回:输出信息
extra
std::shared_ptr<BufferStorage> extra() const {
return mStorage;
};
返回附加信息
参数:无
返回:附加信息
inside
std::shared_ptr<Inside> inside() const {
return mInside;
};
返回内部信息
参数:无
返回:内部信息
valid
bool valid() const {
return mValid;
};
是否有效
参数:无
返回:true/false