小白入门tensorflow

小白入门tensorflow的第一个程序

是一个很简单的线性回归,通过自己拟造的数据进行回归,纯粹是用来记录学习过程
以下部分全部是复制黏贴的,做的注释也都是只是为了自己看得懂

#标签是我们要预测的真实事情:Y
#特征是用于描述数据的输入变量:X_i
#梯度是指一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值即函数在该点沿着该方向变化最快,变化率最大
#梯度是矢量,具有方向和大小
#在开始学习之前就设置的参数叫做超参数。例如:学习率,深度学习隐藏层的层数,节点数等等。。。
#tensorflow的变量是用于保存和更新参数
import os#这两句的导入虽然不知道为什么,但是可以防止Session的定义和run出错,最好还是加上
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf

x_data=np.linspace(-1,1,100)#生成一个-1到1之间的等差数列,包含100个数
#初始设定w,b为2和1,即y=2x+1
y_data=2*x_data+1.0+np.random.randn(*x_data.shape)*0.4
#numpy.random.randn(d0, d1, …, dn) 是从标准正态分布中返回一个或多个样本值。
#numpy.random.rand(d0, d1, …, dn) 的随机样本位于[0, 1)中。
#……………………plt.scatter(x_data,y_data)
#……………………plt.plot(x_data,2*x_data+1.0,color="red",linewidth=3)
x=tf.placeholder(dtype=float,name='x')
y=tf.placeholder(dtype=float,name='y')
def model(x,w,b):
    return tf.add(tf.multiply(x,w),b)
w=tf.Variable(1.0,name='w0')
b=tf.Variable(0.0,name='w0')
pred=model(x,w,b)
train_epoches=10#训练迭代次数
learning_rate=0.05#学习率
loss_function=tf.reduce_mean(tf.square(y-pred))#均方差函数
optimizer=tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)#这个得出来的是一个下降幅度?
sess=tf.Session()
init=tf.global_variables_initializer()
sess.run(init)
for epoch in range(train_epoches):
    for xs,ys in zip(x_data,y_data):#zip函数是将x_data和y_data组合起来,将每个元素变成一个(x,y)的二元组
        _,loss=sess.run([optimizer,loss_function],feed_dict={x:xs,y:ys})#对之前定义占位符的填充
        #这是两个变量分别对应optimizer和lost_function
        #optimizer相当于在节点内部对值已经做了梯度下降处理,赋予_的仍然是一个tensorflow中的一个节点,但是值的
        #改变并不需要通过赋值来实现,直接是在节点内部进行值的改变
    b0temp=b.eval(session=sess)
    w0temp=w.eval(session=sess)
 plt.plot(x_data,w0temp*x_data+b0temp)
plt.scatter(x_data,y_data,label='Original data')
plt.plot(x_data,x_data*sess.run(w)+sess.run(b),\
         label='Fitted line',color='red',linewidth=3)
plt.legend(loc=2)
plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值