我想解决我的优化问题,但优化器不工作。我希望得到与给定值相差最小的解的数组,但我计算的softmax函数始终是1,因为权重和偏差在迭代中不会更新。它们都是零的张量。我如何解决这个问题?
#KI-Model
x = tf.placeholder(tf.float32, [None, 5], name='input') #x_1-x_5
#Init
W = tf.Variable(tf.zeros([5,1]), dtype=tf.float32)
b = tf.Variable(tf.zeros([1]), dtype=tf.float32)
#Sigmoid
y = tf.nn.softmax(tf.matmul(x, W) + b)
#Training
y_tensor = tf.placeholder(tf.float32, [None, 1], name='output')
loss = y-y_tensor
cost = tf.square(loss)
optimizer = tf.train.GradientDescentOptimizer(0.003).minimize(cost)
#Start
session = tf.Session()
init = tf.global_variables_initializer()
session.run(init)
#init first 1000 training_batches
for i in range(1000):
batch_xs.append([dataA[i], dataB[i], dataC[i], dataD[i],
dataE[i]])
batch_ys.append([solution[i]])
for i in range(10000):
session.run(optimizer, feed_dict={x:batch_xs, y_tensor:batch_ys})
print(session.run(y, feed_dict={x:batch_xs, y_tensor:batch_ys}) )发布于 2017-12-07 17:27:03
你没有计算和应用渐变。缺少以下几行:
gradients = optimizer.compute_gradients(loss=cost)
train_step = optimizer.apply_gradients(grads_and_vars=gradients)您还需要在每次迭代中运行训练步骤,如下所示:
session.run(train_step, feed_dict={x:batch_xs, y_tensor:batch_ys})完整的正确代码:
#KI-Model
x = tf.placeholder(tf.float32, [None, 5], name='input') #x_1-x_5
#Init
W = tf.Variable(tf.zeros([5,1]), dtype=tf.float32)
b = tf.Variable(tf.zeros([1]), dtype=tf.float32)
#Sigmoid
y = tf.nn.softmax(tf.matmul(x, W) + b)
#Training
y_tensor = tf.placeholder(tf.float32, [None, 1], name='output')
loss = y-y_tensor
cost = tf.square(loss)
optimizer = tf.train.GradientDescentOptimizer(0.003)
gradients = optimizer.compute_gradients(loss=cost)
train_step = optimizer.apply_gradients(grads_and_vars=gradients)
#Start
session = tf.Session()
init = tf.global_variables_initializer()
session.run(init)
#init first 1000 training_batches
for i in range(1000):
batch_xs.append([dataA[i], dataB[i], dataC[i], dataD[i],
dataE[i]])
batch_ys.append([solution[i]])
for i in range(10000):
session.run(train_step, feed_dict={x:batch_xs, y_tensor:batch_ys})
print(session.run(y, feed_dict={x:batch_xs, y_tensor:batch_ys}) )https://stackoverflow.com/questions/47690976
复制相似问题