zoukankan      html  css  js  c++  java
  • tensorflow初学

      初识变量:

        首先是变量的声明,因为是基于Python的语法,所以直接定义:a=3; 

         向量的定义需要用到tensorflow的相关函数:

            

          向量相乘:

          

          

          这时候直接输出结果显示的格式不是数值,因此我们需要转换,首先将所有全局变量初始化:

            

         之后:

            

         print之前转化:

          

     常用的基本操作:  

        推荐使用float32,cpu和gpu都适合,防止出一些错误。

        定义一个3行4列的矩阵,类型为int32:

         

        仿照前面去定义:

        第二行的like定义了一个和上面的tensor一样的2行3列的元素都是0的矩阵,第三行的ones定义了一个2行3列都是1的矩阵

        

        

         创建一个矩阵同样需要用函数转化一下:

          

        创建一个都是-1.0的2行3列矩阵:

         创建一个从10开始,到12结束的一共三列的矩阵:

        

         创建一个从3开始到18结束的左闭右开的以3为界的矩阵

        还可以随机创建满足限定条件的函数:

          创建一个2行3列的均值为-1方差为4的矩阵:

         还可以对定义好的矩阵进行随机换行操作:

          用到了shuff函数:

             结果:

         计算:

          定义state=0:state = tf.Variable(0)

          使用函数将state和1相加:new_value = tf.add(state,tf.constant(1))

          使用函数将new_value的值赋给stateupdate = tf.assign(state,new_value)

        在for循环中,每执行一次循环都要重新run一次update,从而达到数据更新的目的:

          

        将numpy的格式转换为tensorflow:

         线性回归模型:

        这里最开始我敲代码的时候报错,原因是没有在tensorflow中下载matplotlib,需要在Anaconda Promat中下载一个,其实我我conda list查看的时候是有matplotlib的,可能因为版本问题,我uninstall卸载之后重新下载了,重启客户端就能用了。虽然还报一个numpy版本过高,但是不影响图的出现和后面结果。版本过高可以直接降低版本,使用1.16.0就不报错了。

    import numpy as np
    import tensorflow as tf
    import matplotlib.pyplot as plt
    
    # 随机生成1000个点,围绕在y=0.1x+0.3y的直线周围
    
    num_points = 1000
    vectors_set = []
    for i in range(num_points):
        x1 = np.random.normal(0.0,0.55)
        y1 = x1*0.1 + 0.3+np.random.normal(0.0,0.03)
        vectors_set.append([x1,y1])
    # 生成一些样本
    x_data = [v[0] for v in vectors_set]
    y_data = [v[1] for v in vectors_set]
    
    plt.scatter(x_data,y_data,c='r')
    plt.show()

         生成图像:

          继续:

    #生成一维的W矩阵,取值是【-1,1】之间的随机数
    W = tf.Variable(tf.random_uniform([1],-1.0,1.0),name='W')
    #生成一维矩阵b,初始值为0
    b = tf.Variable(tf.zeros([1]),name='b')
    #经过计算得出预估值y
    y = W*x_data+b
    
    #以预估值y和实际值y_data之间的均方差作为损失
    loss = tf.reduce_mean(tf.square(y-y_data),name='loss')
    #采用梯度下降法优化参数
    optimizer = tf.train.GradientDescentOptimizer(0.5)
    #训练的过程就是最小化这个误差值
    train = optimizer.minimize(loss,name='train')
    
    
    sess = tf.Session()
    
    init = tf.global_variables_initializer()
    sess.run(init)
    #初始化的W和b
    print ("W=",sess.run(W),"b=",sess.run(b),"loss=",sess.run(loss))
    
    #训练20次
    for step in range(20):
        sess.run(train)
        #输出训练好的w和b
        print ("W=",sess.run(W),"b=",sess.run(b),"loss=",sess.run(loss))

        结果:第一行是最开始的初始化的w和b,往后是每次训练输出的w和b,w越来越趋近于0.1,b越来越趋近于0.3,loss越来越小。

            

         mnist数据集:

         只是简单地介绍了一下,给看了几张图片,另外我在import的时候并没有出错

         后面一节也是讲解了一些函数和导入包

    今日学习结束,敲代码+看视频+解决问题总共历时大约7小时。

          

  • 相关阅读:
    html5 自定义属性data-*
    企业微信接口授权
    js对象---字符串
    谈谈html5新增的元素及其他功能
    模拟缓存
    jdbc数据库连接
    面向对象的理解
    最简单的Spring+SpringMVC+Mybatis的整合
    EF报错 附加类型model失败
    c# Web服务远程“调用”调试
  • 原文地址:https://www.cnblogs.com/zhangxinyue/p/14423590.html
Copyright © 2011-2022 走看看