J'ai fait un réseau de neurones uniques à alimentation directe. La prédiction imprime 0.5 alors qu'il devrait imprimer 0.0. Je suis très nouveau pour tensorflow. Aidez-moi, s'il vous plaît. Ceci est mon code:réseau d'alimentation de neurone unique dans un flux tensoriel
"""
O---(w1)-\
\
O---(w2)-->Sum ---> Sigmoid ---> O 3 inputs and 1 output
/
O---(w3)-/
| Input | Output
Example 1 | 0 0 1 | 0
Example 2 | 1 1 1 | 1
Example 3 | 1 0 1 | 1
Exmaple 4 | 0 1 1 | 0
"""
import tensorflow as tf
features = tf.placeholder(tf.float32, [None, 3])
labels = tf.placeholder(tf.float32, [None])
#Random weights
W = tf.Variable([[-0.16595599], [0.44064899], [-0.99977125]], tf.float32)
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
predict = tf.nn.sigmoid(tf.matmul(features, W))
error = labels - predict
# Training
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(error)
for i in range(10000):
sess.run(train, feed_dict={features: [[0, 1, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]], labels: [0, 1, 1, 0]})
training_cost = sess.run(error, feed_dict={features: [[0, 1, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]], labels: [0, 1, 1, 0]})
print('Training cost = ', training_cost, 'W = ', sess.run(W))
print(sess.run(predict, feed_dict={features:[[0, 1, 1]]}))
J'ai également fait manuellement ce modèle en utilisant seulement numpy qui fonctionne bien.
Edit: J'ai essayé tous les types de fonction de coût, y compris tf.reduce_mean (PREDICT-étiquettes) ** 2)
étiquettes - prédire n'est pas une erreur valide, peut-être que vous vouliez dire tf.reduce_mean ((étiquettes) ** - 2 prévoir)? – lejlot