随着梯度下降而下降
#里面的值都是初始化的值 注意二维表达 0.7和1,1
def myregression():
#1.准备数据,x特征值,y目标值
x=tf.random_normal([100,1],mean=1.4,stddev=0.5,name="x_data")
#矩阵相乘必须是二维的
y_true=tf.matmul(x,[[0.7]])+0.8
#2.建立线性回归模型,一个特征,一个权重,一个偏置 y=xw+b
#随机给一个权重和偏置的值,然后在当前状态下优化
#用变量定义才能优化
weight=tf.Variable(tf.random_normal([1,1],mean=0.1,stddev=1.0,name="w"))
bias=tf.Variable(0.0,name="b")
y_predict=tf.matmul(x,weight)+bias
#3.建立损失函数,均方误差
loss=tf.reduce_mean(tf.square(y_true-y_predict))
#4.梯度下降优化损失 这个API已经被封装了,初始化变量一定要做
train_op=tf.GrandientDescentOptimizer(0.1).minimize(loss)
#定义一个初始化的op
init_op=tf.glaobal_variables_initializer()
#通过会话运行程序
with tf.Session() as sess:
#初始化变量
sess.run(init_op)
#打印随机最先初始化的权重和偏置
print("随机初始化的参数权重为:%f,偏置为%f"%(weight.eval(),bias.eval()))
#运行优化
sess.run(train_op)
return None
if __name__ =="__main__":
myregression()
#现在看来也没什么,就是个知识点的应用吧,加油!
主要是强调参数调优吧也好像就是只多了个循环而已 甚至都没有选 另外输出了图
def myregression():
with tf.variable_scope("data"):
#1.准备数据,x特征值,y目标值
x=tf.random_normal([100,1],mean=1.4,stddev=0.5,name="x_data")
#矩阵相乘必须是二维的
y_true=tf.matmul(x,[[0.7]])+0.8
with tf.variable_scope("model"):
#2.建立线性回归模型,一个特征,一个权重,一个偏置 y=xw+b
#随机给一个权重和偏置的值,然后在当前状态下优化
#用变量定义才能优化
weight=tf.Variable(tf.random_normal([1,1],mean=0.1,stddev=1.0,name="w"))
bias=tf.Variable(0.0,name="b")
y_predict=tf.matmul(x,weight)+bias
#3.建立损失函数,均方误差
with tf.variable_scope("loss"):
loss=tf.reduce_mean(tf.square(y_true-y_predict))
#4.梯度下降优化损失 这个API已经被封装了,初始化变量一定要做
with tf.variable_scope("optimizer"):
train_op=tf.GrandientDescentOptimizer(0.1).minimize(loss)
#定义一个初始化的op
init_op=tf.glaobal_variables_initializer()
#通过会话运行程序
with tf.Session() as sess:
#初始化变量
sess.run(init_op)
#循环训练 运行优化
for i in range(500):
sess.run(train_op)
print("随机初始化的参数权重为:%f,偏置为%f"%(weight.eval(),bias.eval()))
#建立事件文件
filewriter=tf.summary.FileWriter(",/tmp/summary/test",graph=sess.graph)
#这个路径之前没有的话老师会提前建的
return None
if __name__ =="__main__":
myregression()
#一般都是上面那个地址
#哦还加了with 根据变量作用域
#增加变量显示
在这里插入图片描述
Losses是在后台显示的
#注意位置哦 scalar 是准确率和损失
扫描二维码关注公众号,回复:
8639000 查看本文章
#TensorFlow #模型的保存与加载
节省时间 训练了n步,后面可以接着n+1开始
#或许大规模运算的时候可以详细学一学