import tensorflow as tf
import pandas as pd
import numpy as np
def normalize(data):
return data - np.min(data)/np.max(data) - np.min(data)
df = pd.read_csv('sat.csv', skipinitialspace=True)
x_reading = df['reading_score']
x_math = df['math_score']
x_reading, x_math = np.array(x_reading[df.reading_score != 's']), np.array(x_math[df.math_score != 's'])
x_data = normalize(np.float32(np.array([x_reading, x_math])))
y_writing = df[['writing_score']]
y_data = normalize(np.float32(np.array(y_writing[df.writing_score != 's'])))
W = tf.Variable(tf.random_uniform([1, 2], -.5, .5)) #float32
b = tf.Variable(tf.ones([1]))
y = tf.matmul(W, x_data) + b
loss = tf.reduce_mean(tf.square(y - y_data.T))
optimizer = tf.train.GradientDescentOptimizer(0.005)
train = optimizer.minimize(loss)
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
for step in range(1000):
sess.run(train)
print step, sess.run(W), sess.run(b), sess.run(loss)
Вот мой код. Мой sat.csv содержит данные чтения, записи и математических вычислений на SAT. Как вы можете догадаться, разница между функциями не такая уж большая.My TensorFlow Gradient Descent расходится
Это часть sat.csv.
DBN,SCHOOL NAME,Num of Test Takers,reading_score,math_score,writing_score
01M292,HENRY STREET SCHOOL FOR INTERNATIONAL STUDIES,29,355,404,363
01M448,UNIVERSITY NEIGHBORHOOD HIGH SCHOOL,91,383,423,366
01M450,EAST SIDE COMMUNITY SCHOOL,70,377,402,370
01M458,FORSYTH SATELLITE ACADEMY,7,414,401,359
01M509,MARTA VALLE HIGH SCHOOL,44,390,433,384
01M515,LOWER EAST SIDE PREPARATORY HIGH SCHOOL,112,332,557,316
01M539,"NEW EXPLORATIONS INTO SCIENCE, TECHNOLOGY AND MATH HIGH SCHOOL",159,522,574,525
01M650,CASCADES HIGH SCHOOL,18,417,418,411
01M696,BARD HIGH SCHOOL EARLY COLLEGE,130,624,604,628
02M047,47 THE AMERICAN SIGN LANGUAGE AND ENGLISH SECONDARY SCHOOL,16,395,400,387
Я использовал только математику, письмо и чтение. Моя цель для вышеприведенного кода - предсказать написание баллов, если я дам математику и чтение баллов.
Я никогда не видел, чтобы модель с градиентным спусками Tensorflow расходилась с такими простыми данными. Что было бы неправильно?
Благодарим за помощь! Но со всеми усилиями, которые я пробовал с вашими советами, ничего не улучшилось. Предыдущий код линейной регрессии, который я сделал без TF, имел такую же проблему с кодом выше. Линейная регрессия начинает урод меня! –
О, я только что изменил курс обучения до 0,0000252, и он работает !!! Спасибо. Но еще одна проблема заключается в том, что моя модель учится так медленно. –