我试图根据给定的输入训练多层perseptron在真或假之间进行分类。 到目前为止,我使用的例子是:
但是这给了我输出作为二进制值,而我更喜欢基于小数或百分比的输出。
我尝试过的事情:
我尝试更改其他可用优化器但没有成功。
optimizer = tf.train.AdamOptimizer(learning_rate = learning_rate).minimize(成本)
答案 0 :(得分:0)
优化器不会更改图层实际给出的输出。
提供的示例使用ReLu作为图层,这有利于分类,但模型概率不会起作用。相反,你最好使用sigmoid函数。
sigmoid函数可用于模拟概率,而ReLu可用于模拟正实数。
为了使其适用于提供的示例,请将multilayer_perceptron函数更改为:
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']
它基本上取代了sigmoid的ReLu激活。
然后,为了评估,使用softmax如下:
output1 = tf.nn.softmax((multilayer_perceptron(x, weights, biases)), name="output")
avd = sess.run(output1, feed_dict={x: features_t})
每个班级将为您提供0到1之间的范围。此外,您可能需要增加时间段才能使其正常工作。