ClassesClasses | | Operators

train_dl_classifier_batchT_train_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatch (Operator)

Name

train_dl_classifier_batchT_train_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatch — Perform a training step of a deep-learning-based classifier on a batch of images.

Signature

train_dl_classifier_batch(BatchImages : : DLClassifierHandle, BatchLabels : DLClassifierTrainResultHandle)

Herror T_train_dl_classifier_batch(const Hobject BatchImages, const Htuple DLClassifierHandle, const Htuple BatchLabels, Htuple* DLClassifierTrainResultHandle)

void TrainDlClassifierBatch(const HObject& BatchImages, const HTuple& DLClassifierHandle, const HTuple& BatchLabels, HTuple* DLClassifierTrainResultHandle)

void HDlClassifierTrainResult::HDlClassifierTrainResult(const HImage& BatchImages, const HDlClassifier& DLClassifierHandle, const HTuple& BatchLabels)

void HDlClassifierTrainResult::TrainDlClassifierBatch(const HImage& BatchImages, const HDlClassifier& DLClassifierHandle, const HTuple& BatchLabels)

static void HOperatorSet.TrainDlClassifierBatch(HObject batchImages, HTuple DLClassifierHandle, HTuple batchLabels, out HTuple DLClassifierTrainResultHandle)

public HDlClassifierTrainResult(HImage batchImages, HDlClassifier DLClassifierHandle, HTuple batchLabels)

void HDlClassifierTrainResult.TrainDlClassifierBatch(HImage batchImages, HDlClassifier DLClassifierHandle, HTuple batchLabels)

Description

train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch performs a training step of the deep-learning-based classifier contained in DLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandle. The classifier handle DLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandle has to be read previously using read_dl_classifierread_dl_classifierReadDlClassifierReadDlClassifierReadDlClassifier. In order to apply training steps, classes have to be specified using set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParam. Other hyperparameters such as the learning rate and the momentum are also important for a successful training. They are set using set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParam. The training step is done on basis of a single batch of images from the training data set, thus the images BatchImagesBatchImagesBatchImagesBatchImagesbatchImages with labels BatchLabelsBatchLabelsBatchLabelsBatchLabelsbatchLabels. Thereby, the number of images within the batch must be consistent with the batch size that can be set with set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParam. Note that the images in BatchImagesBatchImagesBatchImagesBatchImagesbatchImages must fulfill certain conditions regarding, for example, the image size and gray value range, depending on the chosen network. Please have a look at get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamGetDlClassifierParam for more information. The labels in BatchLabelsBatchLabelsBatchLabelsBatchLabelsbatchLabels can be handed over as an array of strings, or as an array of indices corresponding to the position of the label within the array of classes (counting from Valref(0)) set before via 'classes'"classes""classes""classes""classes" with set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParam. Information about the results of the training step as the value of the loss are stored in DLClassifierTrainResultHandleDLClassifierTrainResultHandleDLClassifierTrainResultHandleDLClassifierTrainResultHandleDLClassifierTrainResultHandle and can be accessed using get_dl_classifier_train_resultget_dl_classifier_train_resultGetDlClassifierTrainResultGetDlClassifierTrainResultGetDlClassifierTrainResult.

Note that an epoch generally consists of a large number of batches and that a successful training involves many epochs. Therefore train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch has to be applied several times with different batches. For a more detailed explanation, we refer to Deep Learning / Classification.

During training, a nonlinear optimization algorithm minimizes the value of the loss function. The later one is determined based on the prediction of the neural network on the current batch of images. The algorithm used for optimization is stochastic gradient descent (SGD). It updates the layers' weights of the previous iteration to the new values at iteration as follows:

Here, stands for the learning rate, for the momentum, and for the classification result of the deep learning-based classifier which depends on the network weights and the input batch . The variable is used to involve the influence of the momentum . The loss function used here is the Multinomial Logistic Loss in combination with a quadratic regularization term ,

Here, is a one-hot encoded target vector that encodes the label of the -th image of the batch containing -many images, and shall be understood to be a vector such that is applied on each component of . The regularization term is a weighted -norm involving all weights except for biases. Its influence can be controlled through . In the above formula, stands for the hyperparameter 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior" that can be set with set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParam.

For an explanation of the concept of deep-learning-based classification see the introduction of chapter Deep Learning / Classification.

Attention

The operator train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch internally calls functions that might not be deterministic. Therefore, results from multiple calls of train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch can slightly differ, although the same input values have been used.

To run this operator, cuDNN is required. For further details, please refer to the Installation Guide, paragraph Requirements for Deep Learning.

Execution Information

This operator returns a handle. Note that the state of an instance of this handle type may be changed by specific operators even though the handle is used as an input parameter by those operators.

Parameters

BatchImagesBatchImagesBatchImagesBatchImagesbatchImages (input_object)  (multichannel-)image(-array) objectHImageHImageHobject (real)

Images comprising the batch.

DLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandle (input_control)  dl_classifier HDlClassifier, HTupleHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)

Handle of the deep-learning-based classifier.

BatchLabelsBatchLabelsBatchLabelsBatchLabelsbatchLabels (input_control)  string-array HTupleHTupleHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong)

Corresponding labels for each of the images.

Default value: []

List of values: []

DLClassifierTrainResultHandleDLClassifierTrainResultHandleDLClassifierTrainResultHandleDLClassifierTrainResultHandleDLClassifierTrainResultHandle (output_control)  dl_classifier_train_result HDlClassifierTrainResult, HTupleHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)

Handle of the training results from the deep-learning-based classifier.

Result

If the parameters are valid, the operator train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch returns the value 2 (H_MSG_TRUE). If necessary, an exception is raised.

Possible Predecessors

read_dl_classifierread_dl_classifierReadDlClassifierReadDlClassifierReadDlClassifier, set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParam, get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamGetDlClassifierParam

Possible Successors

get_dl_classifier_train_resultget_dl_classifier_train_resultGetDlClassifierTrainResultGetDlClassifierTrainResultGetDlClassifierTrainResult, apply_dl_classifierapply_dl_classifierApplyDlClassifierApplyDlClassifierApplyDlClassifier, clear_dl_classifier_train_resultclear_dl_classifier_train_resultClearDlClassifierTrainResultClearDlClassifierTrainResultClearDlClassifierTrainResult, clear_dl_classifierclear_dl_classifierClearDlClassifierClearDlClassifierClearDlClassifier

Alternatives

train_class_mlptrain_class_mlpTrainClassMlpTrainClassMlpTrainClassMlp, train_class_svmtrain_class_svmTrainClassSvmTrainClassSvmTrainClassSvm

See also

apply_dl_classifierapply_dl_classifierApplyDlClassifierApplyDlClassifierApplyDlClassifier

Module

Deep Learning Training


ClassesClasses | | Operators