2016-04-04 17 views
0

EDIT:
私のデータにはいくつかのナンバーがありますが、アンカーは正しいので、ノイズをかけて体重を初期化する必要があります。 ありがとう!これらのナノはどこから来たのですか?

私はtensorflowで私の最初のスクリプトをやっています。私はいくつかの問題を印刷する価値があったが、今はそれを得た。 私は単純なロジスティック回帰を始めたいと思っていました。私はkaggle titanicデータセットに取り組んでいます。

私の問題は、(予測)ベクトルすぎ...

EDIT私のyのように、私は私の重みとバイアスの中でいくつかのナンを得た理由が、私にはわからないということです。 私の体重がそのように0に初期化されました私はヌルグラデーションだったと思う。 私が代わりに

W = tf.Variable(tf.zeros([5, 1])) #weight for softmax 

W = tf.truncated_normal([5, 1], stddev=0.1) 

を追加し、私はまだいくつかの問題を持って答えによります。私の変数の変数はまだ変わっていません。私はbiに対して同じことを試してみましたが、次のエラーが出ています。
EDIT

私は私の中に、私にヒントを与える人(Why does TensorFlow return [[nan nan]] instead of probabilities from a CSV file?)この記事を読んで - 私は、BがNaNであるため、クロスエントロピーが...ナンであるため、:( ENDは、yがNaNのようなもの
が見え欠けているようにクロスエントロピー計算0 * log(0)は返されるので、与えられた解を適用すると、1e-50を次のように追加します。

cross_entropy = -tf.reduce_sum(y_ * tf.log(y + 1e-50) )

残念ながら、それは私はまだどこでもナンを持って、私は推測する問題ではありませんでした:(

これはinteristing(私は推測する)私の非常に単純なモデルの一部です:

x = tf.placeholder(tf.float32, [None, 5]) #placeholder for input data 

W = tf.truncated_normal([5, 1], stddev=0.1) 

b = tf.Variable(tf.zeros([1])) # no error but nan 
#b = tf.truncated_normal([1, 1], stddev=0.1) Thow the error descript above 
#b = [0.1] no error but nan 

y = tf.nn.softmax(tf.matmul(x, W) + b) #our model -> pred from model 

y_ = tf.placeholder(tf.float32, [None, 1])#placeholder for input 

cross_entropy = -tf.reduce_sum(y_*tf.log(y)) # crossentropy cost function 

train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy) 
init = tf.initialize_all_variables() # create variable 

sess = tf.InteractiveSession() 
sess.run(init) 

testacc = [] 
trainacc = [] 
for i in range(15): 
    batch_xs = train_input[i*50:(i + 1) * 50] 
    batch_ys = train_label[i*50:(i + 1) * 50] 

    result = sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) 

correct_prediction = tf.equal(y,y_) 
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) 
print(sess.run([accuracy, W, y] , feed_dict={x: test_input, y_: test_label})) 

それは私を返します。 0.0精度ともちろん2ナノの配列の後 私はどこでも値を表示しようとしましたが、どこでもナノを使ってみました: '(

誰かがアイデアを持っていますか?私は何かを忘れているか間違っているかもしれません

事は私がmnist(Googleチュートリアル)と同様のスクリプトを試してみました。私はcsvファイルを読むパンダで自分のデータを取得します。

読んでいただきありがとうございます!

答えて

2

体重行列がゼロであるため、tf.nn.softmaxでゼロ除算が行われています。 MNISTの例のtruncated_normalのような別の正規化方法を使用してください

+0

お返事ありがとうございました 上記の私のポストを編集しました。実際には私の体重で動作しますが、私はバイアスについても同じことをしますが動作しません。編集部分で説明したいくつかのエラーがスローされ、コードが更新されます。 ご存知ですか?あなたの答えをありがとう:) –

+0

私は問題のナノといくつかのデータを持っていた...あなたの答えをありがとう! –

関連する問題