Я делаю простую модель логистической регрессии, используя Tensorflow.Но значение стоимости всегда возвращает nan.
Мои наборы данных делятся на x_data и y_data.x_data - это координата изображения, а y_data - 1 или 0, поскольку мое изображение черно-белое.Я пытаюсь найти разделительную линию между белым и черным цветом.
def train(input,iterations):
import tensorflow as tf
tf.set_random_seed(777) # for reproducibility
x_data = []
y_data = []
i_dim = input.shape[0]
j_dim = input.shape[1]
for i in range(i_dim):
for j in range(j_dim):
x_data.append([j,i_dim-i-1])
y_data.append([int(input[i,j])])
# placeholders for a tensor that will be always fed.
X = tf.placeholder(tf.float32, shape=[None, 2])
Y = tf.placeholder(tf.float32, shape=[None, 1])
W = tf.Variable(tf.random_normal([2, 1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')
# Hypothesis using sigmoid: tf.div(1., 1. + tf.exp(tf.matmul(X, W)))
hypothesis = tf.sigmoid(tf.matmul(X, W) + b)
# cost/loss function
cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) *
tf.log(1 - hypothesis))
train = tf.train.AdamOptimizer(1e-4).minimize(cost)
# Launch graph
with tf.Session() as sess:
# Initialize TensorFlow variables
sess.run(tf.global_variables_initializer())
for step in range(iterations):
cost_val, _ = sess.run([cost, train], feed_dict={X: x_data, Y: y_data})
print(step, cost_val)
это мой журнал (0, nan)
(1, nan)
(2, nan)
(3, nan)
(4, nan)
(5, nan)
(6, nan)
(7, nan)
(8, nan)
(9, nan)
(10, nan)
(11, nan)
(12, nan)
(13, nan)
(14, nan)
(15, nan)
(16, nan)
(17, nan)
(18, nan)
(19, nan)
(20, nan)
и так далее