在tensorflow的MNIST数据集中使用tanh作为激活函数

时间:2018-11-23 09:51:45

标签: tensorflow neural-network deep-learning mnist activation-function

我正在使用tensorflow作为我的作业,为MNIST数据集开发简单的MLP神经网络。在这个问题上,我们应该实现以tanh为激活功能的多层感知器。我应该将数据标签与[-1,+ 1]一起使用。例如对于数字3,我们有:

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

我知道对于S型函数,我们可以使用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 :(得分:0)

不必要地否决了这个问题。顺便说一句..如果我理解正确,这就是答案。

我了解的是,必须使用tanh来代替sigmoid,所以您希望输出数据的格式为+ 1s和-1s而不是0s和1s。

请注意,一种热编码是专门设计用于获取1和0的输出的。这就是为什么它被称为一种热编码-它为正确答案输出1,为其他答案输出0。

现在,没有内置函数来获取所需的输出。但是我更喜欢通过编写自己的代码的一种简短的方法。别害怕-那只是一行代码。

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

谢谢..