Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Función de salida t-SNE

t-SNE función de salida Descripción

A es una función que se ejecuta después de cada iteraciones de optimización del algoritmo t-SNE.tsnefunción de salidaNumPrint Una función de salida puede crear trazados o registrar datos en un archivo o en una variable de espacio de trabajo. La función no puede cambiar el progreso del algoritmo, pero puede detener las iteraciones.

Establecer funciones de salida mediante el argumento de par nombre-valor para la función.Optionstsne Se establece en una estructura creada mediante o.Optionsstatsetstruct Establezca el campo de la estructura en un identificador de función o matriz de celdas de identificadores de función.'OutputFcn'Options

Por ejemplo, para establecer una función de salida denominada, utilice los siguientes comandos.outfun.m

opts = statset('OutputFcn',@outfun); Y = tsne(X,'Options',opts);

Escriba una función de salida utilizando la sintaxis siguiente.

function stop = outfun(optimValues,state)  stop = false; % do not stop by default switch state     case 'init'         % Set up plots or open files     case 'iter'         % Draw plots or update variables     case 'done'         % Clean up plots or files end

pasa las variables y a la función. adopta los valores, o como se muestra en el fragmento de código.tsneEstadooptimValuesEstado'init''iter''done'

Estructuratsne optimValues

Campo optimValuesDescripción
'iteration'Número de iteración
'fval'Divergencia Kullback-Leibler, modificada por exageración durante las primeras 99 iteraciones
'grad'Gradiente de la divergencia Kullback-Leibler, modificada por exageración durante las primeras 99 iteraciones
'Exaggeration'Valor del parámetro de exageración en uso en la iteración actual
'Y'Incrustación actual

Función de salida personalizada de t-SNE

Este ejemplo muestra cómo utilizar una función de salida en.tsne

Función de salida personalizada

El siguiente código es una función de salida que realiza estas tareas:

  • Mantenga un historial de la divergencia Kullback-Leibler y la norma de su gradiente en una variable de espacio de trabajo.

  • Trace la solución y el historial a medida que procedan las iteraciones.

  • Muestre un botón en la gráfica para detener las iteraciones de forma anticipada sin perder ninguna información.Stop

La función de salida tiene una variable de entrada adicional, que permite que sus trazados muestren la clasificación correcta de los datos.species Para obtener información sobre cómo incluir parámetros adicionales como en una función, consulte.speciesParametrizar funciones (MATLAB)

 function stop = KLLogging(optimValues,state,species) persistent h kllog iters stopnow switch state     case 'init'         stopnow = false;         kllog = [];         iters = [];         h = figure;         c = uicontrol('Style','pushbutton','String','Stop','Position', ...             [10 10 50 20],'Callback',@stopme);     case 'iter'         kllog = [kllog; optimValues.fval,log(norm(optimValues.grad))];         assignin('base','history',kllog)         iters = [iters; optimValues.iteration];         if length(iters) > 1             figure(h)             subplot(2,1,2)             plot(iters,kllog);             xlabel('Iterations')             ylabel('Loss and Gradient')             legend('Divergence','log(norm(gradient))')             title('Divergence and log(norm(gradient))')             subplot(2,1,1)             gscatter(optimValues.Y(:,1),optimValues.Y(:,2),species)             title('Embedding')             drawnow         end     case 'done'         % Nothing here end stop = stopnow;  function stopme(~,~) stopnow = true; end end  

Utilice la función de salida personalizada

Trace los datos de iris de Fisher, un conjunto de datos 4-D, en dos dimensiones utilizando.tsne Hay una caída en el valor de divergencia en la iteración 100 porque la divergencia se escala por el valor de exageración para iteraciones anteriores. La incrustación permanece en gran medida sin cambios durante los últimos cientos de iteraciones, por lo que puede ahorrar tiempo haciendo clic en el botón durante las iteraciones.Stop

load fisheriris rng default % for reproducibility opts = statset('OutputFcn',@(optimValues,state) KLLogging(optimValues,state,species)); Y = tsne(meas,'Options',opts,'Algorithm','exact'); 

Temas relacionados