tensorflow实例(2)--机器学习初试

本示例代码,让你对将要学习tensorflow有初步的印象.整段代码其实相当于完成线性方程的求解,
当然,这个求解过程,不是线性方程的求解方法,而是通机器学习的神经网络方法进行求解,
如果你测试成功了本段代码,但又晕晕呼呼,不知道在干什么,

你可以参考我的另一篇文章   机器学习(1)--神经网络初探

# -*- coding:utf-8 -*- 
import tensorflow as tf
import numpy as np

def tfNN(w,b):
    '''
    w 为线性方程上各维度的系数
    b为常数
    即 y= a0 * x0 + a1 * x1 + a2 * x2  + a3 * x3 + b  其中w=[a0,a1,a2,a3]  
    '''
    w=(w if isinstance(w,np.ndarray) else np.array(w)).astype(np.float32)
    #构建一100条数据,做为训练数据
    x_data=np.random.random([100,len(w)]).astype(np.float32)
    y_data=np.matmul(x_data,w)+b
    #print(x_data[0]) #[ 0.46942019  0.34641194  0.44924116  0.05670002]
    #print(y_data[0]) #0.773677      即实现了线性方程  y =  0.46942019*0.1+ 0.34641194*0.2 +0.44924116*0.3+0.05670002*0.4+0.5

    #以下三行为将用weights代替w,biases代替b
    weights=tf.Variable(tf.random_uniform([len(w)],-1.0,1.0)) #随机初始化weights,这里的目的只是给个初始值,这和最终计算的没有任何关系,会在机器学习的过程中将不断的调整这个weights
    biases=tf.Variable(tf.zeros([1]))                          #随机初始化biases,同上条一样,这和最终计算的没有任何关系,所以就设为零
    y=tf.reduce_sum(x_data*weights,axis=1)+biases              #同样是设置y与weights及biases的线性关系

    loss = tf.reduce_mean(tf.square(y - y_data))# 最小化方差,这两行就暂时死记吧,loss就是计算调整测试值与实际值的作用,如果参考了我的另一篇文章,应该能理解这两行的作用
    train=tf.train.GradientDescentOptimizer(0.25).minimize(loss) #优化器,0.25学习效率,应该是一个小于0.5的数,

    trainTimes=(len(w)+1)*100    #计算学习的次数,
    showTrainStep=trainTimes/5   #要学习几百次,全部步骤显示太多,就显示5次
    with tf.Session() as sess:
        sess.run(tf.initialize_all_variables())
        for i in range(trainTimes):
            sess.run(train)
            if i % showTrainStep==0:
                print(sess.run(weights),sess.run(biases))
        print('-'*20+' 计算结束,对最后结果进行四舍五入'+'-'*20)
        print(np.round(sess.run(weights),2),np.round(sess.run(biases),2))  # 对最后结果进行四舍五入,让结果看得清晰些
        #最后的结果与我们的传参(w,b)是基本相符合的,说明整个机器学习的过程是正确有效的
tfNN([0.01,0.02,0.03,0.04],0.05)


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值