использование tanh в качестве функции активации в наборе данных MNIST в тензорном потоке - PullRequest
0 голосов
/ 23 ноября 2018

Я работаю над простой нейронной сетью MLP для набора данных MNIST, используя тензорный поток в качестве домашней работы.в этом вопросе мы должны реализовать многослойный персептрон с tanh в качестве функции активации.Я должен использовать метку данных с [-1, + 1]. Например, для числа 3 у нас есть:

[-1,-1,-1,+1,-1,-1,-1,-1,-1,-1]

Я знаю, что для сигмоидальной функции мы можем использовать on_hot, например:

mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)

чтобы поместить данные в [0,1], как показано ниже для числа 3:

[0,0,0,1,0,0,0,0,0,0]

как я могу кодировать метку между [-1, + 1].заранее спасибо за любую помощь

1 Ответ

0 голосов
/ 23 ноября 2018

Ненужные понижения на вопрос.Кстати, если я правильно понял, вот ответ.

Я понял, что вместо сигмоида вы должны использовать tanh, поэтому вы хотите, чтобы выходные данные были в формате + 1 с и -1 с вместо0 и 1.

Обратите внимание, что одно горячее кодирование специально разработано для получения выходных значений 1 и 0.Вот почему он называется одним горячим кодированием - он выводит 1 для правильного ответа и 0 для других.

Теперь нет встроенной функции для получения желаемого результата.Но я предпочитаю короткий и простой способ написания собственного кода.Не бойтесь - это всего лишь 1 строка кода.

import numpy as np
a = np.array([1, 1, 1, 0, 1, 0])
a[a==0]=-1

Вывод:

array([1, 1, 1, -1, 1, -1])

Вы можете использовать то же самое ... Возьмите одну метку горячего кодирования в качестве выводаиспользуя ваш код, а затем используйте эту одну строку кода, чтобы получить то, что вы хотите.

a[a==0]=-1

Спасибо ..

...