TensorFlow MLP示例输出二进制而不是十进制

2024-09-29 19:35:33 发布

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

我试图训练一个多层perseptron,根据给定的输入来区分真假。 到目前为止,我使用的是一个例子:

https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/multilayer_perceptron.py

但这给了我一个二进制值的输出,我更喜欢十进制或基于百分比的输出。在

我所做的:

我试图将优化器更改为其他可用的优化程序,但没有成功。在

optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)


Tags: httpsgithubmastercomratetensorflowexamplesblob
1条回答
网友
1楼 · 发布于 2024-09-29 19:35:33

优化器不会更改层实际给出的输出。在

提供的示例对层使用ReLu,这对分类很好,但对概率建模却不起作用。你最好用sigmoid函数。在

sigmoid函数可以用来模拟概率,而ReLu可以用来模拟正实数。在

为了使其适用于所提供的示例,将多层感知器功能更改为:

def multilayer_perceptron(_X, _weights, _biases):
    layer_1 = tf.sigmoid(tf.add(tf.matmul(_X, _weights['h1']), _biases['b1']), name="sigmoid_l1") #Hidden layer with sigmoid activation
    layer_2 = tf.sigmoid(tf.add(tf.matmul(layer_1, _weights['h2']), _biases['b2']), name="sigmoid_l2") #Hidden layer with sigmoid activation
    return tf.matmul(layer_2, _weights['out'], name="matmul_lout") + _biases['out']

它基本上取代了乙状结肠的ReLu激活。在

然后,使用softmax进行评估,如下所示:

^{pr2}$

它将为每个类提供0到1之间的范围。另外,你可能需要增加时间段的数量才能工作。在

相关问题 更多 >

    热门问题