主要内容

T-SNE输出功能

T-SNE输出功能描述

一种tsne输出功能is a function that runs after every数字T-SNE算法的优化迭代。输出功能可以创建图或将数据记录到文件或工作区变量。该函数不能改变算法的进度,但可以停止迭代。

Set output functions using the选项名称值对参数tsne功能。Set选项使用使用Statsetor结构。设置'outputfcn'领域选项函数手柄或函数手柄的单元格数组的结构。

例如,设置一个名称的输出函数OUTFUN.M,,,,use the following commands.

opts = statset('outputfcn',,,,@outfun); Y = tsne(X,'选项',选择);

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

功能stop = offun(optimvalues,state)stop = false;%不要默认停止switch状态案子'init'%设置图或打开文件案子'iTer'%绘制图或更新变量案子'完毕'%清理图或文件结尾

tsne通过状态andOptimValues变量到您的功能。状态接收值'init',,,,'iTer', 或者'完毕'如代码段所示。

tsneOptimValues结构

OptimValues场地 描述
'迭代' 迭代编号
'fval' Kullback-Leibler divergence, modified by exaggeration during the first 99 iterations
'grad' Kullback-Leibler Divergence的梯度,在前99个迭代中通过夸张修改
'夸张' 当前迭代中使用的夸张参数的值
'y' 当前嵌入

T-SNE自定义输出功能

此示例显示了如何在tsne

Custom Output Function

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

  • 在工作区变量中保留kullback-leibler差异的历史及其梯度的规范。

  • 随着迭代的进行,绘制解决方案和历史记录。

  • 显示停止图上的按钮可以尽早停止迭代而不会丢失任何信息。

输出函数具有额外的输入变量,物种,这使其图能够显示数据的正确分类。有关包含额外参数的信息,例如物种在功能中,请参阅参数化功能

功能stop = kllogging(最佳价值,状态,物种)执着的H Kllog Iters停止switch状态案子'init'stopnow = false;kllog = [];iters = [];h =图;c = uicontrol('风格',,,,“ pusphtton',,,,'细绳',,,,'停止',,,,'Position',,,,...[10 10 50 20],'打回来',@阻止我);案子'iTer'kllog = [kllog;optimvalues.fval,log(norm(optimvalues.grad))];分配(的基本',,,,'历史',kllog)iters = [iters;OptimValues.Iteration];如果长度(iTers)> 1图(H)子图(2,1,2)图(Iters,kllog);Xlabel('Iterations') ylabel(“损失和梯度”) 传奇(“分歧”,,,,“日志(norm(渐变))”) 标题(“分歧和日志(norm(渐变))”)子图(2,1,1)gScatter(optimvalues.y(:,1),optimvalues.y(::,2),物种)标题(“嵌入”)绘制结尾案子'完毕'% 这里没有什么结尾stop = stopnow;功能stopme(〜,〜)stopnow = true;结尾结尾

使用自定义输出功能

使用Fisher Iris数据(4-D数据集)绘制使用的二维tsne。迭代100处的差异值下降,因为差异是通过早期迭代的夸张值缩放的。在过去的几百个迭代中,嵌入在很大程度上保持不变,因此您可以通过单击来节省时间停止迭代过程中的按钮。

加载渔业rng默认%可再现性opts = statset('outputfcn',@(OptimValues,State)Kllogging(OptimValues,state,stelt));y = tsne(MEAS,'选项',选择,'算法',,,,'exact');

Related Topics