为什么模型在标准化后表现不佳?

2024-10-02 04:24:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是完全连接的神经网络,我用的是标准化的数据,这样每个样本值的范围从0到1。我在第一层用了100个神经元,在第二层用了10个,在训练过程中用了将近50个缺失样本。我想把我的数据分为两类。但我的网络性能太低,几乎49%的训练和测试数据。我试图通过更改超参数的值来提高性能。但没用。有人能告诉我怎样才能获得更高的绩效吗?你知道吗

x = tf.placeholder(tf.float32, [None, nPixels])
W1 = tf.Variable(tf.random_normal([nPixels, nNodes1], stddev=0.01))
b1 = tf.Variable(tf.zeros([nNodes1]))
y1 = tf.nn.relu(tf.matmul(x, W1) + b1)

W2 = tf.Variable(tf.random_normal([nNodes1, nNodes2], stddev=0.01))
b2 = tf.Variable(tf.zeros([nNodes2]))
y2 = tf.nn.relu(tf.matmul(y1, W2) + b2)

W3 = tf.Variable(tf.random_normal([nNodes2, nLabels], stddev=0.01))
b3 = tf.Variable(tf.zeros([nLabels]))
y = tf.nn.softmax(tf.matmul(y2, W3) + b3)

y_ = tf.placeholder(dtype=tf.float32, shape=[None, 2])

cross_entropy = -1*tf.reduce_sum(y_* tf.log(y), axis=1)    
loss = tf.reduce_mean(cross_entropy)

optimizer = tf.train.GradientDescentOptimizer(0.01).minimize(loss)
correct_prediction = tf.equal(tf.argmax(y_,axis=1), tf.argmax(y, axis=1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))

Tags: 数据reducetfzerosrandomnn性能variable
1条回答
网友
1楼 · 发布于 2024-10-02 04:24:23

你的计算模型对“图像”一无所知,它只看到数字。所以,如果你用0-255的像素值训练它,它已经学会了“光”的意思,“暗”的意思,以及如何把这些结合起来,给你任何你尝试的目标值。你知道吗

你所做的标准化就是你强制所有像素为0-1。所以就模特儿而言,他们都黑得像黑夜一样。毫无疑问,它不能提取任何有意义的东西。你知道吗

您需要在训练和测试期间应用相同的输入规范化。

说到神经网络模型的归一化,最好是归一化到零均值。你知道吗

相关问题 更多 >

    热门问题