多层感知器似乎构造不正确

时间:2019-03-01 14:41:59

标签: python-3.x tensorflow neural-network

我正在尝试在张量流中半手动地构建MLP。我这样做并对其进行了训练,但是无论学习率如何,我的均方误差都很高。我认为我的模型构建不正确。我想我可以通过查看诸如keras之类的高级API的源代码来找到答案,但是我不知道如何理解源代码,所以我希望有人对此发表意见。

输入数据为:

data = np.random.rand(1000, 5)
m, n = data.shape
data_biased = np.c_[np.ones((m, 1)), data]

我要学习的功能很简单:

# Some numpy algebra with gaussian noise on top
target = (3 * data[:, 0] * data[:, 3] + data[:, 1] - 3 * np.square(data[:, 2]) + 4 * data[:, 4]).reshape(m, 1) + np.random.normal(10, 1, size=(m, 1))

我当前拥有的网络是:

k = 2 * n + 1
# Putting the data and targets into tensors
Data = tf.constant(value=data, dtype=tf.float32, name='Data')
Target = tf.constant(value=target, dtype=tf.float32, name='Target')
Input = tf.placeholder(dtype=tf.float32, shape=(m, n + 1), name='Input')

# My prameters. Only one hidden layer with k neurons.
Theta1 = tf.get_variable(name='Theta1', initializer=tf.constant(value=np.random.rand(n + 1, k - 1) * 2 - 1, dtype=tf.float32))
Theta2 = tf.get_variable(name='Theta2', initializer=tf.constant(value=np.random.rand(k, 1) * 2 - 1, dtype=tf.float32))

# Computing the layer activations
Hidden = tf.concat(values=[np.ones((m, 1)), tf.sigmoid(x=tf.matmul(a=Input, b=Theta1))], axis=1, name='Hidden')
Output = tf.sigmoid(x=tf.matmul(a=Hidden, b=Theta2), name='Output')

这里有什么突出的问题吗?

编辑:我对隐藏层中神经元数量的选择是任意的。我还不知道如何选择这个数字。

0 个答案:

没有答案