0
下面是一個實現和功能單一的神經元使用tensorflow:反向傳播算法卡住培訓和功能
def tf_sigmoid(x):
return 1/(1 + tf.exp(-x))
data = [
(0, 0),
(0, 1),
(1, 0),
(1, 1),
]
labels = [
0,
0,
0,
1,
]
n_steps = 1000
learning_rate = .1
x = tf.placeholder(dtype=tf.float32, shape=[2])
y = tf.placeholder(dtype=tf.float32, shape=None)
w = tf.get_variable('W', shape=[2], initializer=tf.random_normal_initializer(), dtype=tf.float32)
b = tf.get_variable('b', shape=[], initializer=tf.random_normal_initializer(), dtype=tf.float32)
h = tf.reduce_sum(x * w) + b
output = tf_sigmoid(h)
error = tf.abs(output - y)
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(error)
sess.run(tf.initialize_all_variables())
for step in range(n_steps):
for i in np.random.permutation(range(len(data))):
sess.run(optimizer, feed_dict={x: data[i], y: labels[i]})
有時它完美的作品,但在某些參數它卡住,不希望學習。例如,使用這些初始參數:
w = tf.Variable(initial_value=[-0.31199348, -0.46391705], dtype=tf.float32)
b = tf.Variable(initial_value=-1.94877, dtype=tf.float32)
在成本函數中幾乎沒有任何改進。我做錯了什麼,也許我應該以某種方式調整參數的初始化?
這是一個了不起的答案,謝謝! (我認爲我不會因爲我沒有使用批次而意味着(錯誤)'因此沒有什麼可以平均) –