2017-02-16 99 views
0
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渐变下降

这是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的梯度下降模型与这种简单的数据不同。什么错了?

回答

1

这里有几个选项,你可以尝试:

  • 正常化你的输入和输出数据
  • 设定较小的初始值的权重
  • 使用较低的学习速度
  • 将您的损失您拥有的样本数量(不会将您的数据放入占位符中)已不常见)。

让我知道这些选项有什么(如果有的话)帮助和祝你好运!

+0

感谢您的帮助!但是,尽管我已经尝试了您的建议,但似乎没有任何改进。之前我没有使用TF的线性回归代码与上面的代码有相同的问题。线性回归开始吓到我了! –

+0

哦,我刚刚将学习速率更改为0.0000252,并且正在运行!非常感谢。但另一个问题是我的模型学得如此之慢。 –