一个tsne
输出函数是一个函数在每个之后运行NumPrint
t-SNE算法的优化迭代。输出函数可以创建绘图,或将数据记录到文件或工作区变量中。该函数不能改变算法的进程,但可以停止迭代。
属性设置输出函数选项
的名称-值对参数tsne
函数。集选项
创建的结构statset
或结构体
.设置“OutputFcn”
场的选项
结构转换为函数句柄或函数句柄的单元数组。
例如,要设置一个名为outfun.m
,使用以下命令。
选择= statset (“OutputFcn”, @outfun);Y = tsne (X,“选项”、选择);
使用以下语法编写输出函数。
函数stop = outfun(optimValues,state) stop = false;%默认不停止开关状态情况下“init”%设置绘图或打开文件情况下“通路”%绘制绘图或更新变量情况下“完成”%清除图或文件结束
tsne
通过了状态
和optimValues
函数的变量。状态
接受价值“init”
,“通路”
,或“完成”
如代码片段所示。
tsne
optimValues
结构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) 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(量,“选项”选择,“算法”,“准确”);