level 1
代码如下:
def myregression():
"""
实现线性回归预测
return: None
"""
#1、准备好特征和目标值
x = tf.random_normal([100,1],mean = 1.75,stddev = 0.5,name = 'input_data_x')
y_true = tf.matmul(x,[[0.7]]) + 0.8
#2、建立回归模型,1个特征,1个权重
w = tf.Variable(tf.random_normal([1,1],mean = 0.0,stddev = 1.0),name = 'weight')
b = tf.Variable(0.0,name='bias')
y_predict = tf.matmul(x,w) + b
#3、建立损失函数计算损失------均方误差
loss = tf.reduce_mean(tf.square(y_true-y_predict))
#4、梯度下降算法优化损失
train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
#定义变量初始化op
init_op = tf.global_variables_initializer()
#通过会话运行训练过程
with tf.Session() as sess:
#初始化变量
sess.run(init_op)
while True:
sess.run(train_op)
print("value of x and w is %f %f"%(w.eval(),b.eval()))
import tensorflow as tf
if __name__ == "__main__":
myregression()
问题:
1、在上下文语句中,运行
xx = x.eval()会触发什么操作?是获取了x的值,还是重新运行了一遍张量x的赋值操作,返回了一个结果?
2、在sess中运行如下语句
sess.run(init_op)
xx = x.eval()
for i in range(100):
print(xx[i])
xx = x.eval()
for i in range(100):
print(xx[i])
return
为什么两次打印的值不一样
3、当生成训练数据时,使用了如下语句
x = tf.random_normal([100,1],mean = 1.75,stddev = 0.5,name = 'input_data_x')
y_true = tf.matmul(x,[[0.7]]) + 0.8
此时训练正常,能够训练出正常数据
但是如果改成
x = tf.random_normal([100,1],mean = 10,stddev = 0.5,name = 'input_data_x')
y_true = tf.matmul(x,[[0.7]]) + 0.8
就导致无法训练,最后训练参数很大很大
为什么?
2018年12月24日 14点12分
1
def myregression():
"""
实现线性回归预测
return: None
"""
#1、准备好特征和目标值
x = tf.random_normal([100,1],mean = 1.75,stddev = 0.5,name = 'input_data_x')
y_true = tf.matmul(x,[[0.7]]) + 0.8
#2、建立回归模型,1个特征,1个权重
w = tf.Variable(tf.random_normal([1,1],mean = 0.0,stddev = 1.0),name = 'weight')
b = tf.Variable(0.0,name='bias')
y_predict = tf.matmul(x,w) + b
#3、建立损失函数计算损失------均方误差
loss = tf.reduce_mean(tf.square(y_true-y_predict))
#4、梯度下降算法优化损失
train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
#定义变量初始化op
init_op = tf.global_variables_initializer()
#通过会话运行训练过程
with tf.Session() as sess:
#初始化变量
sess.run(init_op)
while True:
sess.run(train_op)
print("value of x and w is %f %f"%(w.eval(),b.eval()))
import tensorflow as tf
if __name__ == "__main__":
myregression()
问题:
1、在上下文语句中,运行
xx = x.eval()会触发什么操作?是获取了x的值,还是重新运行了一遍张量x的赋值操作,返回了一个结果?
2、在sess中运行如下语句
sess.run(init_op)
xx = x.eval()
for i in range(100):
print(xx[i])
xx = x.eval()
for i in range(100):
print(xx[i])
return
为什么两次打印的值不一样
3、当生成训练数据时,使用了如下语句
x = tf.random_normal([100,1],mean = 1.75,stddev = 0.5,name = 'input_data_x')
y_true = tf.matmul(x,[[0.7]]) + 0.8
此时训练正常,能够训练出正常数据
但是如果改成
x = tf.random_normal([100,1],mean = 10,stddev = 0.5,name = 'input_data_x')
y_true = tf.matmul(x,[[0.7]]) + 0.8
就导致无法训练,最后训练参数很大很大
为什么?