TensorFlow实践项目的报告

1、 项目背景、功能需求分析

  • 什么是逆概率
    • 我们肯定知道正概率,举个例子就是,箱子里有5个黑球5个白球,那你随机拿到黑球和白球的概率都是50%,那现在我不知道箱子里有多少个黑球白球,那我通过不断的拿球应该如何确定箱子里有多少个黑球白球呢,这就是出名的逆概率
    • 其实机器学习很多时候也就是逆概率的问题,我有大量现实例子的情况下,让机器从这些例子中找到共同的特征,例如给一万张猫的图片给机器学习,然后找到共同的特征(两只耳朵,四只脚,有胡须,有毛,有尾巴等特征)
  • 根据逆概率的概念我们再举个其他场景
    • y=Ax+B(A、B是常量)
    • 如何通过这些x和y值来得到A和B的值?

2、 选题使用相关技术及环境

1.系统是ubuntu 18.04 LTS
2.我用的是pycharm来写的代码
3.Python用的是3.6.4
4.anaconda的版本为1.7.2
5.TensorFlow用的是2.3.1

3、 概要设计

先通过anaconda创建python3.6.4的虚拟环境 conda create -n tensorflow python=3.6.4

然后激活环境 source activate tensorflow

再者通过镜像高速下载对应的TensorFlow版本

pip install tensorflow -i https://pypi.douban.com/simple

安装好了TensorFlow环境之后,输入python

import tensorflow as tf

tf.version

image-20201027173130772

检查是否安装成功

4、详细设计与实现

先构造数据再搭建TensorFlow神经计算结构,根据判断与正确值的差距然后进行反向传播修正参数

建立训练器,初始化TensorFlow训练结构,然后进行循环训练400次,最后输出训练次数通过这些x和y值来得到A和B的值


##构造数据##
x_data=np.random.rand(100).astype(np.float32) #随机生成100个类型为float32的值
y_data=x_data*0.1+0.3  #定义方程式y=x_data*A+B
##-------##

##建立TensorFlow神经计算结构##
weight=tf.Variable(tf.random_uniform([1],-1.0,1.0)) 
biases=tf.Variable(tf.zeros([1]))     
y=weight*x_data+biases
##-------##


loss=tf.reduce_mean(tf.square(y-y_data))  #判断与正确值的差距
optimizer=tf.train.GradientDescentOptimizer(0.5) #根据差距进行反向传播修正参数
train=optimizer.minimize(loss) #建立训练器

init=tf.initialize_all_variables() #初始化TensorFlow训练结构
sess=tf.Session()  #建立TensorFlow训练会话
sess.run(init)     #将训练结构装载到会话中


5、 系统测试

image-20201027172328512

6、总结

在安装的时候要很多环境配置没有配好,通过自己以往的经验以及网上搜索内容来一步步解决

1、一开始下载好Ubuntu18.0.4很多东西都没有下载好,借助百度的力量一步步下载pip,vim,python

2、再者在安装anaconda的时候一直安装不成功

image-20201027173502788

发现是版本不一致问题,因为我python的版本是3.7版本,但是我安装anaconda是最新版本,最新版本对应的是3.8python的版本,所以我去搜索anaconda的历史版本,安装Anaconda3-2019.07-Linux-x86_64.sh这个对应的版本

安装成功后会有对应的版本

image-20201027173846540

anaconda历史版本

3、安装TensorFlow一直爆红,后面发现原来是网速不行,因为TensorFlow下载是用外网的,考虑到TensorFlow的文件太大,直接pip install tensorflow容易失败,所以直接使用清华园的镜像

pip install tensorflow -i https://pypi.douban.com/simple

4、在全部环境配置好的运行py文件一直出现这个错误

AttributeError: module ‘tensorflow’ has no attribute 'random_normal

上网找到原因,因为最新的TensorFlow版本已经更新了把random_normal方法已经换为:random.normal

导致程序一直运行失败

最好的方法就是把import tensorflow as tf替换成

import tensorflow.compat.v1 as tf

tf.disable_v2_behavior()

通过上面的步骤:遇到搞不定的问题,一定要慢慢解决,把大问题化成小问题,一步步把小问题解决,那么大问题自然而然就可以解决了

在linux上安装tensorflow教程

记录一下Ubuntu18.04下,安装python环境

anaconda历史版本

ubuntu18.04 anaconda安装tensorflow

#导入依赖库
import numpy as np #这是Python的一种开源的数值计算扩展,非常强大
import tensorflow as tf  #导入tensorflow 

##构造数据##
x_data=np.random.rand(100).astype(np.float32) #随机生成100个类型为float32的值
y_data=x_data*0.1+0.3  #定义方程式y=x_data*A+B
##-------##

##建立TensorFlow神经计算结构##
weight=tf.Variable(tf.random_uniform([1],-1.0,1.0)) 
biases=tf.Variable(tf.zeros([1]))     
y=weight*x_data+biases
##-------##


loss=tf.reduce_mean(tf.square(y-y_data))  #判断与正确值的差距
optimizer=tf.train.GradientDescentOptimizer(0.5) #根据差距进行反向传播修正参数
train=optimizer.minimize(loss) #建立训练器

init=tf.initialize_all_variables() #初始化TensorFlow训练结构
sess=tf.Session()  #建立TensorFlow训练会话
sess.run(init)     #将训练结构装载到会话中

for  step in range(400): #循环训练400次
     sess.run(train)  #使用训练器根据训练结构进行训练
     if  step%20==0:  #每20次打印一次训练结果
        print(step,sess.run(weight),sess.run(biases)) #训练次数,A值,B值

00次
sess.run(train) #使用训练器根据训练结构进行训练
if step%20==0: #每20次打印一次训练结果
print(step,sess.run(weight),sess.run(biases)) #训练次数,A值,B值


©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页