API

Defines

DISABLE_COPY_AND_ASSIGN(classname)

Enums

enum SparseValueType

Values:

SPARSE_NON_VALUE = 0
SPARSE_VALUE = 1
enum SparseFormatType

Values:

SPARSE_CSR = 0
SPARSE_CSC = 1
enum GradientMatchineCreateMode

Values:

CREATE_MODE_NORMAL = 0
CREATE_MODE_TESTING = 4

Functions

void initPaddle(int argc, char **argv)

Initialize paddle.

In python, this method should be invoked as

import sys
import paddle
paddle.initPaddle(sys.argv)
or you can change arguments as any list of str.

bool isGpuVersion()

Return true if this py_paddle is compiled in GPU Version.

Variables

const size_t NO_SPARSE_ID

In Python, -1UL is hard to write. So define a const value used by python side.

class IOError
#include <PaddleAPI.h>

The Error of IO Operation. Such as file not found, etc.

class RangeError
#include <PaddleAPI.h>

Out of range error.

class UnsupportError
#include <PaddleAPI.h>

Not support Error, such as access GPU memory directly, etc.

struct FloatArray
#include <PaddleAPI.h>

This type will map to python’s list of float.

Public Functions

FloatArray(const float *b, const size_t l)

Public Members

const float *buf
const size_t length
bool needFree
struct IntArray
#include <PaddleAPI.h>

This type will map to python’s list of int.

Public Functions

IntArray(const int *b, const size_t l, bool f = false)

Public Members

const int *buf
const size_t length
bool needFree
struct IntWithFloatArray
#include <PaddleAPI.h>

This type will map to python’s list of (int, float)

Public Functions

IntWithFloatArray(const float *v, const int *i, size_t l, bool f = false)

Public Members

const float *valBuf
const int *idxBuf
const size_t length
bool needFree
class Matrix

Public Functions

virtual ~Matrix()
void toNumpyMatInplace(float **view_data, int *dim1, int *dim2)

Cast to numpy matrix.

Example:

import paddle
m = paddle.Matrix.createZero(10,2)
numpy_mat = m.toNumpyMat()
Note
This method take no parameter in python.
Note
This method in python will return a numpy matrix, not void.
Note
Only CpuDenseMatrix is supported.

void copyToNumpyMat(float **view_m_data, int *dim1, int *dim2)

Copy To numpy mat.

void copyFromNumpyMat(float *data, int dim1, int dim2)

Copy From Numpy Mat.

bool isSparse() const

return true if this matrix is sparse.

SparseValueType getSparseValueType() const
SparseFormatType getSparseFormat() const
IntArray getSparseRowCols(size_t i) const
IntWithFloatArray getSparseRowColsVal(size_t i) const
size_t getHeight() const
size_t getWidth() const
float get(size_t x, size_t y) const
void set(size_t x, size_t y, float val)
FloatArray getData() const

return type is list of float

void sparseCopyFrom(const std::vector<int> &rows, const std::vector<int> &cols, const std::vector<float> &values = std::vector< float >())

Copy from rows, cols, values.

if sparse_nonvalue, the values should be []

bool isGpu() const

Public Static Functions

Matrix *createZero(size_t height, size_t width, bool useGpu = false)

Create A Matrix with height,width, which is filled by zero.

Matrix *createSparse(size_t height, size_t width, size_t nnz, bool isNonVal = true, bool trans = false, bool useGpu = false)

Create Sparse Matrix.

After create sparse, sparseCopyFrom can be used to fill matrix.

Note
the default sparse type is SPARSE_CSR.
Parameters
  • nnz -

    Number of non zero values.

Matrix *createDense(const std::vector<float> &data, size_t height, size_t width, bool useGpu = false)

Create Dense Matrix.

Note
the value will be copy into a new matrix.
Parameters
  • data -

    list of float should be passed in python.

Matrix *createCpuDenseFromNumpy(float *data, int dim1, int dim2, bool copy = false)

Create Cpu Dense Matrix from numpy matrix, dtype=float32

Parameters
  • data -

    a numpy matrix.

  • dim1 -

    dimension of data.

  • dim2 -

    dimension of data.

  • copy -

    true if copy into a new matrix, false will create matrix inplace.

Matrix *createGpuDenseFromNumpy(float *data, int dim1, int dim2)

Create Gpu Dense Matrix from numpy matrix, dtype=float32.

Private Functions

Matrix()
DISABLE_COPY_AND_ASSIGN(Matrix)
void *getSharedPtr() const

Private Members

MatrixPrivate *m

Private Static Functions

Matrix *createByPaddleMatrixPtr(void *sharedPtr)

Friends

friend Trainer
friend GradientMachine
friend Arguments
class Vector

Public Functions

~Vector()
void toNumpyArrayInplace(float **view_data, int *dim1)

Cast to numpy array inplace.

void copyToNumpyArray(float **view_m_data, int *dim1)

Copy to numpy array.

void copyFromNumpyArray(float *data, int dim)

Copy from numpy array.

float get(const size_t idx) const

getitem in python

void set(const size_t idx, float val)

setitem in python

bool isGpu() const

Return is GPU vector or not.

size_t getSize() const

len in python

Public Static Functions

Vector *createZero(size_t sz, bool useGpu = false)

Create Vector filled with zero.

Vector *create(const std::vector<float> &data, bool useGpu = false)

Create Vector from list of float.

It will create a new vector, and copy data into it.

Vector *createCpuVectorFromNumpy(float *data, int dim, bool copy = false)

Create Cpu Vector from numpy array, which dtype=float32

If copy is false, it will create vector inplace.

Vector *createGpuVectorFromNumpy(float *data, int dim)

Create Gpu Vector from numpy array, which dtype=float32.

Private Functions

DISABLE_COPY_AND_ASSIGN(Vector)
Vector()
void *getSharedPtr()

Private Members

VectorPrivate *m

Private Static Functions

Vector *createByPaddleVectorPtr(void *ptr)

Friends

friend Parameter
friend ParameterOptimizer
friend ParameterTraverseCallbackPrivate
class IVector

Public Functions

void toNumpyArrayInplace(int **view_data, int *dim1)

Cast to numpy array inplace.

void copyToNumpyArray(int **view_m_data, int *dim1)

Copy to numpy array.

void copyFromNumpyArray(int *data, int dim)

Copy from numpy array.

virtual ~IVector()
IntArray getData() const

Return a list of int, the memory is alloced and copied.

int &operator[](const size_t idx)

This method will map to python [] method.

const int &operator[](const size_t idx) const
int get(const size_t idx) const
void set(const size_t idx, int val)
bool isGpu() const

Return true if it is gpu vector.

size_t getSize() const

This method will map to python len();.

Public Static Functions

IVector *createZero(size_t sz, bool useGpu = false)

Create IVector filled with zero.

IVector *create(const std::vector<int> &data, bool useGpu = false)

Create IVector from list of int. It will create a new vector, and copy data into it.

IVector *createCpuVectorFromNumpy(int *data, int dim, bool copy = false)

Create Cpu IVector from numpy array, which dtype=int32

If copy is false, it will create vector inplace

IVector *createGpuVectorFromNumy(int *data, int dim)

Create Gpu IVector from numpy array, which dtype=int32

Private Functions

IVector()
DISABLE_COPY_AND_ASSIGN(IVector)
void *getSharedPtr() const

Private Members

IVectorPrivate *m

Private Static Functions

IVector *createByPaddleVectorPtr(void *ptr)

Friends

friend Arguments
class Arguments
#include <PaddleAPI.h>

The Arguments is actual a std::vector<paddle::Argument> in paddle.

Public Functions

void resize(size_t slotNum)
virtual ~Arguments()
size_t getSlotNum() const

Return the slot number that aguments contains.

It is actually the vector’s size

Matrix *getSlotValue(size_t idx) const

The get functions of Arguments

the param idx is the slot id

IVector *getSlotIds(size_t idx) const
Matrix *getSlotIn(size_t idx) const
IVector *getSlotSequenceStartPositions(size_t idx) const
IVector *getSlotSubSequenceStartPositions(size_t idx) const
IVector *getSlotSequenceDim(size_t idx) const
int64_t getBatchSize(size_t idx = 0) const
void setSlotValue(size_t idx, Matrix *mat)

The set functions of Arguments.

The param idx is the slot id. The other param is the input Matrix or vector.

void setSlotIn(size_t idx, Matrix *mat)
void setSlotIds(size_t idx, IVector *vec)
void setSlotSequenceStartPositions(size_t idx, IVector *vec)
void setSlotSubSequenceStartPositions(size_t idx, IVector *vec)
void setSlotSequenceDim(size_t idx, IVector *vec)

Public Static Functions

Arguments *createArguments(size_t slotNum)

Create a arguments with size. Note that it can be zero.

Private Functions

Arguments()
DISABLE_COPY_AND_ASSIGN(Arguments)
void *getInternalArgumentsPtr() const

Private Members

ArgumentsPrivate *m

Private Static Functions

Arguments *createByPaddleArgumentVector(void *ptr)

Friends

friend Trainer
friend GradientMachine
friend SequenceGenerator
class ParameterConfig

Public Functions

~ParameterConfig()
std::string toProtoString() const

return proto buf string.

Private Functions

DISABLE_COPY_AND_ASSIGN(ParameterConfig)
ParameterConfig()
void *getRawPtr()

Private Members

ParameterConfigPrivate *m

Private Static Functions

ParameterConfig *createParameterConfigFromParameterSharedPtr(void *ptr)

Internal methods

ParameterConfig *createParameterConfigFromParameterPtr(void *ptr)

Friends

friend Parameter
friend ParameterOptimizer
friend ParameterTraverseCallbackPrivate
class OptimizationConfig

Public Functions

~OptimizationConfig()
std::string toProtoString()

return protobuf string.

Public Static Functions

OptimizationConfig *createFromProtoString(const std::string &str)

Private Functions

DISABLE_COPY_AND_ASSIGN(OptimizationConfig)
OptimizationConfig()
void *getRawPtr()

Private Members

OptimizationConfigPrivate *m

Friends

friend TrainerConfig
friend ParameterOptimizer
class Parameter

Public Functions

virtual ~Parameter()
std::string getName() const

get parameter name

Vector *getBuf(ParameterType type)

get buf in Parameter

size_t getID() const

get id

ParameterConfig *getConfig()

Private Functions

Parameter()
DISABLE_COPY_AND_ASSIGN(Parameter)

Private Members

ParameterPrivate *m

Private Static Functions

Parameter *createFromRawPtr(void *ptr)
Parameter *createFromSharedPtr(void *ptr)

Friends

friend UpdateCallbackWrapper
friend GradientMachine
class ModelConfig
#include <PaddleAPI.h>

You can only get model config from TrainerConfig.

It is used by GradientMachine.

Public Functions

virtual ~ModelConfig()

Private Functions

ModelConfig()
DISABLE_COPY_AND_ASSIGN(ModelConfig)
void *getPaddleModelConfig() const

Private Members

ModelConfigPrivate *m

Friends

friend TrainerConfig
friend TrainerConfigPrivate
friend GradientMachine
class TrainerConfig
#include <PaddleAPI.h>

To get TrainerConfig from file.

It is used by GradientMachine.

Public Functions

virtual ~TrainerConfig()
ModelConfig *getModelConfig() const
OptimizationConfig *getOptimizationConfig() const

Public Static Functions

TrainerConfig *createFromTrainerConfigFile(const std::string &configPath)

Private Functions

TrainerConfig()
DISABLE_COPY_AND_ASSIGN(TrainerConfig)

Private Members

TrainerConfigPrivate *m
class UpdateCallback
#include <PaddleAPI.h>

The callback in backword.

You can inherit this class in python.

class UpdateCallbackInPython(paddle.UpdateCallback):
  def __init__(self):
    paddle.UpdateCallback.__init__(self)

  def apply(self, param):
    assert isinstance(param, paddle.Parameter)

Public Functions

virtual ~UpdateCallback()
virtual void apply(Parameter *p)
class ParameterTraverseCallback

Public Functions

~ParameterTraverseCallback()
void apply(const std::vector<Vector *> &vecs, const ParameterConfig &config, size_t sparseId)

Private Functions

DISABLE_COPY_AND_ASSIGN(ParameterTraverseCallback)
ParameterTraverseCallback()

Private Members

ParameterTraverseCallbackPrivate *m

Friends

friend ParameterOptimizer
class ParameterOptimizer

Public Functions

~ParameterOptimizer()
void init(size_t numRows, const ParameterConfig *config)
void startPass()
void finishPass()
void startBatch(size_t numSamplesProcessed)
void finishBatch()
void update(const std::vector<Vector *> &vecs, const ParameterConfig &conf, size_t sparseId = NO_SPARSE_ID)
std::vector<int> getParameterTypes() const
ParameterTraverseCallback *needSpecialTraversal(const ParameterConfig &config) const

Public Static Functions

ParameterOptimizer *create(OptimizationConfig *config)

Private Functions

DISABLE_COPY_AND_ASSIGN(ParameterOptimizer)
ParameterOptimizer()

Private Members

ParameterOptimizerPrivate *m
class GradientMachine

Public Functions

virtual ~GradientMachine()
void forward(const Arguments &inArgs, Arguments *outArgs, PassType passType)

The forward stage of GradientMachine.

Note
the outArgs could be zero length arguemnts.
Note
THIS METHOD IS VERY USEFULL FOR PREDICT FROM TRAINED MODEL.

void backward(const UpdateCallback &callback = UpdateCallback ())

The backward stage of GradientMachine.

Note
Currently the ParameterUpdater is not wrapped in SWIG, so backward cannot actually train a network. But you can write a update callback to change the parameter or implement a ParameterUpdater in python side.

void forwardBackward(const Arguments &inArgs, Arguments *outArgs, PassType passType, const UpdateCallback &callback = UpdateCallback ())

Combine forward/backward

void loadParameters(const std::string &path)
size_t getParameterSize() const
Parameter *getParameter(size_t i)
void randParameters()
Matrix *getLayerOutput(const std::string &layerName) const
SequenceGenerator *asSequenceGenerator(const std::vector<std::string> &dict = std::vector< std::string >(), size_t begin_id = 0UL, size_t end_id = 0UL, size_t max_length = 100UL, size_t beam_size = -1UL)

Create a sequence generator.

Note
It just like a paddle_gen_sequence.

Public Static Functions

GradientMachine *createByConfigProtoStr(const std::string &protoStr, GradientMatchineCreateMode mode = CREATE_MODE_NORMAL, const std::vector<int> &parameterTypes = defaultParamTypes)

Create By ProtoStr.

The ProtoStr can be generate by python’s protobuf code.

GradientMachine *createByModelConfig(ModelConfig *conf, GradientMatchineCreateMode mode = CREATE_MODE_NORMAL, const std::vector<int> &parameterTypes = defaultParamTypes)

Create by ModelConfig object.

To get ModelConfig, you can get TrainerConfig from config file, then get model config by TrainerConfig

Private Functions

GradientMachine()
DISABLE_COPY_AND_ASSIGN(GradientMachine)

Private Members

GradientMachinePrivate *m

Private Static Functions

GradientMachine *createFromPaddleModelPtr(void *confPtr, GradientMatchineCreateMode mode, const std::vector<int> &types)

Private Static Attributes

std::vector<int> defaultParamTypes
class Trainer

Public Functions

virtual ~Trainer()
void startTrain()

Start Train.

void finishTrain()
void startTrainPass()

Start Pass.

void finishTrainPass()
void setBatchSize(size_t batchSize)
bool trainOneBatch(size_t batchSize = -1UL)

Train one batch,

Return
true if all batch finished.
Parameters
  • batchSize -

    -1 wiil use command line or batch size set before, otherwise use this batchSize for train.

bool prepareBatchData(size_t batchSize = -1UL)
void finishTrainOneBatch()
void forwardOneBatch()
Arguments *getNetworkOutput()
Matrix *getLayerOutput(const std::string &layerName)

Public Static Functions

Trainer *createByCommandLine()

Create A Trainer By TrainerConfig. using paddle command line.

Private Functions

Trainer()
DISABLE_COPY_AND_ASSIGN(Trainer)

Private Members

TrainerPrivate *m
class ISequenceResults
#include <PaddleAPI.h>

The N-Best results generated from one input sequence.

Subclassed by PathSequenceResults

Public Functions

virtual ~ISequenceResults()
virtual size_t getSize() const = 0

Number of result.

virtual std::string getSentence(size_t id, bool split = false) const = 0

Get sentence from dictionary.

Parameters
  • id -

    the index of result.

  • split -

    if true, the return sentence will be splited with ‘ ‘ by each word. Default is false.

virtual std::vector<int> getSequence(size_t id) const = 0
virtual float getScore(size_t id) const = 0
class SequenceGenerator

Public Functions

virtual ~SequenceGenerator()
ISequenceResults *generateSequence(const Arguments &inArgs) const

Generate Sequence by input.

Note
The inArgs is just one sequence of data.
Note
The return will get a N-best generate result by inArgs. Sort by score.

void setDict(const std::vector<std::string> &dict)
void setBos(size_t bos)
void setEos(size_t eos)
void setMaxLength(size_t maxlength)
void setBeamSize(size_t beamSize)

Private Functions

DISABLE_COPY_AND_ASSIGN(SequenceGenerator)
SequenceGenerator()

Private Members

SequenceGeneratorPrivate *m

Private Static Functions

SequenceGenerator *createByGradientMachineSharedPtr(void *ptr)

Friends

friend GradientMachine

Functions

template <typename T1, typename T2>
void staticCastVector(std::vector<T2> *dest, const std::vector<T1> &src)