Выходная функция t-SNE

Описание выходной функции t-SNE

A tsne output function является функцией, которая запускается после каждого NumPrint итерации оптимизации алгоритма t-SNE. Выходная функция может создавать графики или записывать данные в файл или в переменную рабочей области. Функция не может изменить прогресс алгоритма, но может остановить итерации.

Установите выходные функции с помощью Options аргумент пары "имя-значение" tsne функция. Задайте Options к структуре, созданной с помощью statset или struct. Установите 'OutputFcn' поле Options структуру указателю на функцию или cell-массиву указателей на функцию.

Для примера задать выходную функцию с именем outfun.m, используйте следующие команды.

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

Напишите выходную функцию с помощью следующего синтаксиса.

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

tsne проходит state и optimValues переменные вашей функции. state принимает значения 'init', 'iter', или 'done' как показано на фрагменте кода.

tsne optimValues Структура

optimValues ОбластьОписание
'iteration'Число итерации
'fval'Расхождение Куллбэка-Лейблера, измененное преувеличением в течение первых 99 итераций
'grad'Градиент расхождения Куллбэка-Лейблера, измененный преувеличением в течение первых 99 итераций
'Exaggeration'Значение параметра преувеличения, используемого в текущей итерации
'Y'Внедрение тока

Пользовательская выходная функция t-SNE

В этом примере показано, как использовать выходную функцию в tsne.

Настраиваемая выходная функция

Следующий код является выходной функцией, которая выполняет эти задачи:

  • Сохраните историю расхождения Куллбэка-Лейблера и норму его градиента в переменной рабочей области.

  • Постройте график решения и истории по мере продолжения итераций.

  • Отобразите Stop кнопку на графике, чтобы остановить итерации раньше, не теряя никакой информации.

Выходная функция имеет дополнительную входную переменную, species, что позволяет его графикам показать правильную классификацию данных. Для получения информации о включении дополнительных параметров, таких как species в функции см. Параметризация функций.

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

Используйте пользовательскую выходную функцию

Постройте график данных радужной оболочки глаза Фишера, 4-D набора данных, в двух размерностях с помощью tsne. Существует падение значения Расхождения в итерации 100, потому что расхождение масштабируется значением преувеличения для более ранних итераций. Встраивание остается в значительной степени неизменным в течение последних нескольких сотен итераций, поэтому можно сэкономить время, нажав на Stop кнопку во время итераций.

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

Похожие темы