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

      

posted on 2021-02-20 22:13  王玉昙  阅读(64)  评论(0编辑  收藏  举报

导航