• 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小时。

          

  • 相关阅读:
    1553: Good subsequence (很奇妙的set模拟题,也可以直接暴力)
    1550: Simple String (做得少的思维题,两个字符串能否组成另外一个字符串问题)
    1549: Navigition Problem (几何计算+模拟 细节较多)
    1548: Design road (思维题 做法:三分找极值)
    Python 正则表达式入门(初级篇)
    Python中的正则表达式教程
    软件自动化测试的学习步骤
    自动化测试的Selenium的python版安装与使用
    自动化测试一些问题
    自动化测试
  • 原文地址:https://www.cnblogs.com/zhangxinyue/p/14423590.html
Copyright © 2020-2023  润新知