主要内容

t-SNE输出函数

t-SNE输出功能说明

一个tsne输出函数函数是在每个NumPrintt-SNE算法的优化迭代。输出函数可以创建绘图,或将数据记录到文件或工作空间变量。该函数不能改变算法的进度,但可以停止迭代。

方法设置输出函数选项参数的名称-值对参数tsne函数。集选项创建的结构statset结构体.设置“OutputFcn”场的选项结构的函数句柄或函数句柄的单元格数组。

例如,设置一个名为outfun.m,使用以下命令。

选择= statset (“OutputFcn”, @outfun);Y = tsne (X,“选项”、选择);

使用以下语法编写一个输出函数。

函数stop = outfun(optimValues,state) stop = false;%默认不停止开关状态情况下“init”设置绘图或打开文件情况下“通路”绘制绘图或更新变量情况下“完成”清理情节或文件结束

tsne通过了状态而且optimValues函数的变量。状态以价值观为基础“init”“通路”,或“完成”如代码片段所示。

tsneoptimValues结构

optimValues 描述
“迭代” 迭代数
“fval” Kullback-Leibler发散,在前99次迭代中通过夸张进行修改
“研究生” Kullback-Leibler发散度的梯度,在前99次迭代中通过夸张进行修改
“夸张” 当前迭代中使用的夸张参数的值
“Y” 当前的嵌入

自定义输出函数

的输出函数tsne

自定义输出函数

下面的代码是执行这些任务的输出函数:

  • 在工作空间变量中保存Kullback-Leibler散度的历史和其梯度的范数。

  • 在迭代进行时绘制解决方案和历史。

  • 显示一个停止按钮,以便在不丢失任何信息的情况下尽早停止迭代。

输出函数有一个额外的输入变量,物种,这使得它的图能够显示数据的正确分类。有关包含额外参数的信息,如物种在函数中,参见参数化功能

函数停止= KLLogging (optimValues、州物种)持续的住手开关状态情况下“init”stopnow = false;kllog = [];iter = [];h =图;c = uicontrol (“风格”“按钮”“字符串”“停止”“位置”...[10 10 50 20],“回调”, @stopme);情况下“通路”kllog = [kllog;optimValues.fval、日志(规范(optimValues.grad)));assignin (“基地”“历史”,kllog) ters = [ters;optimValues.iteration];如果长度(ters) > 1图(h) subplot(2,1,2) plot(ters,kllog);包含(“迭代”) ylabel (的损失和梯度)传说(“差异”“日志(规范(梯度))”)标题(散度和日志(规范(梯度))”) subplot(2,1,1) gscatter(optimValues.Y(:,1),optimValues.Y(:,2),物种)title(“嵌入”) drawnow结束情况下“完成”%也没有结束停止= stopnow;函数Stopme (~,~) stopnow = true;结束结束

使用自定义输出函数

绘制Fisher虹膜数据,一个4-D数据集,在二维使用tsne.在迭代100时,散度值有所下降,因为散度是根据早期迭代的夸张值进行缩放的。在过去的几百次迭代中,嵌入基本上保持不变,因此您可以通过单击停止按钮。

负载fisheririsrng默认的%的再现性选择= statset (“OutputFcn”@ (optimValues状态)KLLogging (optimValues、州物种));Y = tsne(量,“选项”选择,“算法”“准确”);

相关的话题

Baidu
map