2
私は現在、Courseraの教授Andrew Ngの "Machine Learning"コースの課題を取り直しています。私はLogistic Regressionの部分で立ち往生しています。GradientDescentOptimizerでNaNが生成されるのはなぜですか?
0.69314718056
nan
nan
nan
費用関数への最初の結果が正しいですが、次のものがあることになっている:
3.0133
1.5207
0.7336
、代わりに私が手
filename = 'data/ex2data1.txt'
data = np.loadtxt(filename, delimiter = ",", unpack = True)
# Data matrices
xtr = np.transpose(np.array(data[:-1]))
ytr = np.transpose(np.array(data[-1:]))
# Initial weights
W = tf.Variable(tf.zeros([2,1], dtype = tf.float64))
# Bias
b = tf.Variable(tf.zeros([1], dtype = tf.float64))
# Cost function
y_ = tf.nn.sigmoid(tf.matmul(xtr,W) + b)
cost = -tf.reduce_mean(ytr*tf.log(y_) + (1-ytr)*tf.log(1-y_))
optimize = tf.train.GradientDescentOptimizer(0.01).minimize(cost)
corr = tf.equal(tf.argmax(ytr,1), tf.argmax(y_,1))
acc = tf.reduce_mean(tf.cast(corr, tf.float64))
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
print(sess.run(cost))
for _ in range(3):
sess.run(optimize)
print(sess.run(cost))
この
は答えを作り出しますNaNの束。私は低い学習率を試してみましたが、無駄なことはありません。私は間違って何をしていますか? TensorFlowでこの割り当てを再現することは可能ですか?PS:他のpythonソリューションはscipy.optimizeを使用しているようですが、TensorFlowの値でどのように使用するのか分かりません。可能な限りTensorFlowだけを使用したいと思います。
EDIT:tf.zerosの代わりにtf.onesとしてバイアスをかけてみましたが、うまくいきませんでした。