add_sample_class_gmmT_add_sample_class_gmmAddSampleClassGmmAddSampleClassGmmadd_sample_class_gmm添加样本类高斯混合模型(算子)

名称

add_sample_class_gmmT_add_sample_class_gmmAddSampleClassGmmAddSampleClassGmmadd_sample_class_gmm — 将训练样本添加到高斯混合模型的训练数据中。

签名

add_sample_class_gmm( : : GMMHandle, Features, ClassID, Randomize : )

Herror T_add_sample_class_gmm(const Htuple GMMHandle, const Htuple Features, const Htuple ClassID, const Htuple Randomize)

void AddSampleClassGmm(const HTuple& GMMHandle, const HTuple& Features, const HTuple& ClassID, const HTuple& Randomize)

void HClassGmm::AddSampleClassGmm(const HTuple& Features, Hlong ClassID, double Randomize) const

static void HOperatorSet.AddSampleClassGmm(HTuple GMMHandle, HTuple features, HTuple classID, HTuple randomize)

void HClassGmm.AddSampleClassGmm(HTuple features, int classID, double randomize)

def add_sample_class_gmm(gmmhandle: HHandle, features: Sequence[float], class_id: int, randomize: float) -> None

描述

add_sample_class_gmmadd_sample_class_gmmAddSampleClassGmmAddSampleClassGmmAddSampleClassGmmadd_sample_class_gmm 将训练样本添加至由 GMMHandleGMMHandleGMMHandleGMMHandleGMMHandlegmmhandle 指定的高斯混合模型(GMM)。训练样本通过 FeaturesFeaturesFeaturesFeaturesfeaturesfeaturesClassIDClassIDClassIDClassIDclassIDclass_id 参数提供。 FeaturesFeaturesFeaturesFeaturesfeaturesfeatures 是样本的特征向量,因此必须是长度为 NumDimNumDimNumDimNumDimnumDimnum_dim 的实数向量(该数值在 create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm 中设定)。ClassIDClassIDClassIDClassIDclassIDclass_id 表示样本所属类别,取值为 0 到 NumClassesNumClassesNumClassesNumClassesnumClassesnum_classes-1 之间的整数(该数值在 create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm中设定)。

在特征向量为整数型的特殊情况下,它们以步长为 1.0 的网格形式分布于特征空间中。例如,通常用于颜色分类的 RGB 特征向量是由三个元素组成的三元组,每个元素的取值范围均为 0 至 255 之间的整数。实际上,甚至可能存在多个特征向量代表同一点。当使用此类数据训练 GMM 时,训练算法可能倾向于将建模的高斯分布沿着与网格维度平行的线性相关数据线或平面进行对齐。如果 train_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmmTrainClassGmmtrain_class_gmm 返回的 CentersCentersCentersCenterscenterscenters 数量异常偏高,则表明算法存在此类行为。可通过 RandomizeRandomizeRandomizeRandomizerandomizerandomize 参数来处理此类不良影响。若 RandomizeRandomizeRandomizeRandomizerandomizerandomize > 0.0,则向训练数据向量的每个分量添加均值为 0、标准差为 RandomizeRandomizeRandomizeRandomizerandomizerandomize 的随机高斯噪声,并将转换后的训练数据存储于 GMM 中。当 RandomizeRandomizeRandomizeRandomizerandomizerandomize 1.0时,随机化后的数据将呈现为网格点周围的小云团,这并不能改善数据云的特性。当 RandomizeRandomizeRandomizeRandomizerandomizerandomize >> 2.0 时,随机化可能对最终的 GMM 产生过强的影响。对于整数特征向量,建议将 RandomizeRandomizeRandomizeRandomizerandomizerandomize 值设置在 1.5 至 2.0 之间,这能将整数数据转换为均匀分布的点云,同时保持其在特征空间中的整体形态不变。如果数据是通过缩放整数数据生成的,则可能出现相同的问题。在此,RandomizeRandomizeRandomizeRandomizerandomizerandomize 必须使用与原始数据相同的缩放因子进行缩放。

在使用 train_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmmTrainClassGmmtrain_class_gmm 训练 GMM 之前,必须先通过 add_sample_class_gmmadd_sample_class_gmmAddSampleClassGmmAddSampleClassGmmAddSampleClassGmmadd_sample_class_gmm所有训练样本添加到 GMM 中。

当前存储的训练样本数量可通过 get_sample_num_class_gmmget_sample_num_class_gmmGetSampleNumClassGmmGetSampleNumClassGmmGetSampleNumClassGmmget_sample_num_class_gmm 查询。存储的训练样本可通过 get_sample_class_gmmget_sample_class_gmmGetSampleClassGmmGetSampleClassGmmGetSampleClassGmmget_sample_class_gmm 再次读取。

通常,使用 write_samples_class_gmmwrite_samples_class_gmmWriteSamplesClassGmmWriteSamplesClassGmmWriteSamplesClassGmmwrite_samples_class_gmm 将训练样本保存至文件中颇为实用,这既便于重复利用样本,又可在必要时向数据集添加新训练样本,从而使新建的 GMM 能够基于扩展后的数据集重新进行训练。

执行信息

此算子修改后续输入参数的状态:

在执行此算子时,若该参数值需在多个线程间使用,则必须对其访问进行同步。

参数

GMMHandleGMMHandleGMMHandleGMMHandleGMMHandlegmmhandle (输入控制,状态被修改)  class_gmm HClassGmm, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

GMM 句柄。

FeaturesFeaturesFeaturesFeaturesfeaturesfeatures (输入控制)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

待存储的训练样本特征向量。

ClassIDClassIDClassIDClassIDclassIDclass_id (输入控制)  number HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

待存储的训练样本类。

RandomizeRandomizeRandomizeRandomizerandomizerandomize (输入控制)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

添加至训练数据的高斯噪声标准差。

默认值: 0.0

建议值: 0.0, 1.5, 2.0

限制: Randomize >= 0.0

结果

如果参数有效,算子 add_sample_class_gmmadd_sample_class_gmmAddSampleClassGmmAddSampleClassGmmAddSampleClassGmmadd_sample_class_gmm 返回值 2 ( H_MSG_TRUE )。如有必要,则抛出异常。

可能的前趋

create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm

可能的后继

train_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmmTrainClassGmmtrain_class_gmm, write_samples_class_gmmwrite_samples_class_gmmWriteSamplesClassGmmWriteSamplesClassGmmWriteSamplesClassGmmwrite_samples_class_gmm

替代

read_samples_class_gmmread_samples_class_gmmReadSamplesClassGmmReadSamplesClassGmmReadSamplesClassGmmread_samples_class_gmm, add_samples_image_class_gmmadd_samples_image_class_gmmAddSamplesImageClassGmmAddSamplesImageClassGmmAddSamplesImageClassGmmadd_samples_image_class_gmm

另见

clear_samples_class_gmmclear_samples_class_gmmClearSamplesClassGmmClearSamplesClassGmmClearSamplesClassGmmclear_samples_class_gmm, get_sample_num_class_gmmget_sample_num_class_gmmGetSampleNumClassGmmGetSampleNumClassGmmGetSampleNumClassGmmget_sample_num_class_gmm, get_sample_class_gmmget_sample_class_gmmGetSampleClassGmmGetSampleClassGmmGetSampleClassGmmget_sample_class_gmm

模块

基础