Tensorflow_Logistic分类,结果显示为“ nan”

时间:2018-11-14 00:46:32

标签: tensorflow nan logistic-regression

我使用张量流尝试了后勤分类
我还尝试用语音数据集分为男性和女性的逻辑分类。

但是结果(费用,假设)始终显示为'nan'

Image of the results

有人回答

  

如果数据值很大,则日志(假设)似乎接近无穷大,这就是为什么它超出float32表示形式的范围的原因。   我通过将W乘以0.1并减少假设来解决了这个问题。

所以我将W乘以 0.1

W = tf.multiply(tf.Variable(tf.random_normal([20,1]), name='weight'), [0.1])

但是问题没有解决。

我想知道问题是什么。其实这是我第一次编码。

This is the raw dataset I used.

我要有人帮我!

import tensorflow as tf
import numpy as np
tf.set_random_seed(777)
xy=np.loadtxt('voice.csv', delimiter=',', dtype=np.float)
x_data=xy[:, 0:-1]
y_data=xy[:, [-1]]
print(x_data.shape, x_data, len(x_data))
print(y_data.shape, y_data)
X = tf.placeholder(tf.float32, shape=[None, 20])
Y = tf.placeholder(tf.float32, shape=[None, 1])
W = tf.Variable(tf.random_normal([20, 1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')
hypothesis = tf.sigmoid(tf.matmul(X, W) + b)
cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) *
                   tf.log(1 - hypothesis))
train = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost)
predicted = tf.cast(hypothesis > 0.5, dtype=tf.float32)
accuracy = tf.reduce_mean(tf.cast(tf.equal(predicted, Y), dtype=tf.float32))
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for step in range(10001):
    cost_val, _ = sess.run([cost, train], feed_dict={X: x_data, Y: y_data})
    if step % 200 == 0:
        print(step, cost_val)
h, c, a = sess.run([hypothesis, predicted, accuracy],
                   feed_dict={X: x_data, Y: y_data})
print("\nHypothesis: ", h, "\nCorrect (Y): ", c, "\nAccuracy: ", a)

0 个答案:

没有答案