主要内容

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” 当前的嵌入

t-SNE自定义输出功能

中如何使用输出函数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) iter = [iter;optimValues.iteration];如果长度> 1 figure(h) subplot(2,1,2) plot(iter,kllog);包含(“迭代”) ylabel (的损失和梯度)传说(“差异”“日志(规范(梯度))”)标题(散度和日志(规范(梯度))”) subplot(2,1,1) gscatter(optimValues.Y(:,1),optimValues.Y(:,2),species) title(“嵌入”) drawnow结束情况下“完成”%也没有结束停止= stopnow;函数Stopme (~,~) stopnow = true;结束结束

使用自定义输出函数

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

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

相关的话题