【tensorflow】tensorflow的安装及应用

2023-05-16

安装tensorflow的三种方法

1.在cmd命令行中输入pip install tensorflow,默认安装最新版

2.其他旧版本的安装,去pypi.org官网

 可以点击release  history选择想要的版本进行安装

3.安装包安装,找到download files,选择与自己系统匹配的文件进行下载

 下载完成后,在cmd命令行中输入 pip install 把下载好的安装包拖进来即可


安装tensorflow出现的问题

 我自己选择了第一种方法的安装,安装结束后去pycharm导入模块之后报错,提示没有tensorflow,在网上查找解决方法后发现是没有安装到相应位置。

 解决方法:

在cmd命令行中输入activate zjj(这是我之前用anaconda创建的名为zjj的python3.6环境)进入之前创建好的环境

再次输入pip install tensorflow进行安装

 之后就提示安装成功tensorflow以及相应的依赖包了,再次进入pycharm导入模块就成功了(注意pycharm里面的环境要选择刚才安装tensorflow的环境)


请根据给定的100个样本数据找出合适的a,b,c 使得y=ax_{1}+bx_{2}+c

1.导入100个样本数据

2.构造一个线性模型

3.定义损失函数

4.定义训练函数

5.启动图

6.初始化变量

7. 开始训练

完整代码如下:

import numpy as np   #数据类型默认为64位
import tensorflow as tf         #数据类型默认为32位
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
       #数据类型改为32位
data = np.float32(np.load('line_fit_data.npy'))  # 导入100个样本数据
x_data = data[:, :2]   # 样本自变量
y_data = data[:, 2:]   # 样本实际值
'''
定义计算(计算图)
'''
w = tf.Variable(tf.zeros([2, 1]))   #构建变量两行一列a和b
bias = tf.Variable(tf.zeros([1]))    #构建c
y = tf.matmul(x_data, w) + bias   # 构造一个线性模型,矩阵乘法操作,数据和w相乘加上c
loss = tf.reduce_mean(tf.square(y_data - y))  # 定义损失函数,越低越好(均方误差)

tf.compat.v1.disable_eager_execution()
optimizer = tf.compat.v1.train.GradientDescentOptimizer(0.5)   # 构建梯度下降法优化器
train = optimizer.minimize(loss)   # 定义训练函数
'''
执行计算(会话中)
'''
# 启动会话
sess = tf.Session()
sess.run(tf.global_variables_initializer())   # 初始化所有变量
# sess.run(y)
for i in range(100):
    print('第', i, '轮训练后的模型损失值:', sess.run(loss))
    sess.run(train)   # 开始训练

print(sess.run([w, bias]) )  # y = 0.1*x1 + 0.2*x2 + 0.3
sess.close()

运行结果:

可以看到经过100轮的训练,损失函数的值为 2.7425253e-11,a为0.0999,b为0.1999,c为0.300,而这100个样本点就是通过y=0.1x_{1}+0.2x_{2}+0.3生成的,可以看出训练后的结果与实际值是很接近的


 代码运行出现的问题

由于我使用的tensorflow版本是2.0以上版本,出现了以下错误

解决方法:

增加这一句

tf.compat.v1.disable_eager_execution()

optimizer = tf.train.GradientDescentOptimizer(0.5) 

 改为

optimizer = tf.compat.v1.train.GradientDescentOptimizer(0.5) 

又显示报错Attempting to capture an EagerTensor without building a function.原因是tensorflow版本问题

增加以下两句即可

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

手写数字识别

首先导入模块,读取数据,实际值用x_data和y_data来表示。

设置网络,定义损失函数以及优化器

启动会话执行操作

from tensorflow.examples.tutorials.mnist import input_data
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)   # 读取数据
x_data = mnist.train.images
y_data = mnist.train.labels
w = tf.Variable(tf.zeros([784, 10]))   # 网络权值矩阵
bias = tf.Variable(tf.zeros([10]))     # 网络阈值
y = tf.nn.softmax(tf.matmul(x_data, w) + bias)   # 网络输出

cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_data*tf.log(y), axis=1))  # 交叉熵(损失函数)
optimizer = tf.train.GradientDescentOptimizer(0.03)   # 梯度下降法优化器
train = optimizer.minimize(cross_entropy)   # 训练节点
acc = tf.reduce_mean(tf.cast(tf.equal(tf.argmax(y, axis=1), tf.argmax(y_data, axis=1)), dtype=tf.float32))  # 模型预测值与样本实际值比较的精度

sess = tf.Session()  # 启动会话
sess.run(tf.global_variables_initializer())  # 执行变量初始化操作
for i in range(10):
    print(i, '轮训练的精度', sess.run(acc))
    sess.run(train)
    print(sess.run(cross_entropy))
sess.close()

运行结果:

可以看到十轮之后的训练精度达到0.72,交叉熵达到2.05,并不是很理想,可以通过增加训练轮数来优化训练结果

 上述代码有一个缺点是将所有样本都放到模型里面来训练,这样子计算量很大,尤其是数据集很大的情况下,我们希望每次训练的时候从模型中取出一部分样本来训练。可以把训练样本通过占位符来解决,优化代码如下

 x_data = mnist.train.images
 y_data = mnist.train.labels

改为

x_data = tf.placeholder(tf.float32, [None, 784])  # 占位符:样本自变量
y_data = tf.placeholder(tf.float32, [None, 10])   # 占位符:样本目标变量

for i in range(10):
    print(i, '轮训练的精度', sess.run(acc))
    sess.run(train)
    print(sess.run(cross_entropy))
sess.close()

改为

 for i in range(200):
     x_s, y_s = mnist.train.next_batch(100)   #随机取100个样本
     if i%30 == 0:    #每隔30轮打印一次精度
         acc_tr = sess.run(acc, feed_dict={x_data: x_s, y_data: y_s})
         print(i, '轮训练的精度', acc_tr)
    sess.run(train, feed_dict={x_data:x_s, y_data:y_s})   # 模型训练
sess.close()

 可以查看训练200次之后的精度,为了便于观察,我们每隔30次进行一次打印精度操作

 最终训练200轮之后,训练精度达到了0.85左右,但是模型的好坏最终我们要通过测试集来评估。在sess.close()前面加上如下代码,即可用测试集来测试模型的准确率

acc_te = sess.run(acc, feed_dict={x_data:mnist.test.images, y_data:mnist.test.labels})  # 测试集精度
print('模型测试精度:', acc_te)

把训练次数调整为500次,每隔100次打印一下精度,可以看到通过500轮的训练,使用测试集测试模型,准确率达到0.87

 优化模型:可以通过增加训练轮数,改变梯度下降法优化器参数来优化模型,不过由于网络结构的限制,最终模型准确率智能达到0.91左右。

 


手写数字识别运行代码出现的问题

第一个:

原因:是tensorflow中没有examples,首先找到对应tensorflow的文件。

解决方法:

不知道自己tensorflow的安装位置,进入cmd,我的tensorflow是在anacond的zjj环境中安装的

1.输入conda activate zjj激活环境

2.输入python

3.输入import tensorflow as tf

4.输入tf.__path__查看安装路径(一定要注意path前后都是两个下划线!!!!!) 

进入tensorflow文件夹,发现没有examples文件夹。可以从github上下载完整的文件,然后复制到自己tensorflow的安装目录下。

参考文章:https://blog.csdn.net/qq_42632840/article/details/123963041

 重新运行,没有报错 

第二个:


原因:tensorflow 2.0版本去掉了placeholder,而tensorflow 1.几版本才有。

在控制台输入pip freeze,查看当前版本

 解决:将

import tensorflow as tf

改为

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

以上实验所需数据放在:http://链接:https://pan.baidu.com/s/1UptIodLkBVTqYEZxVJgRPw?pwd=qblu 提取码:qblu

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【tensorflow】tensorflow的安装及应用 的相关文章

随机推荐

  • Java--Java版本和JDK版本

    对于Java初学者 xff0c 经常会听到同事 xff0c 或看到网上Java版本和JDK版本不一的叫法 xff0c 不明白这两者到底什么关系 xff1f 其实博主当年初学Java时也有这样的困惑 xff0c 今天我们就来好好探讨一下 xf
  • Oracle-Windows双击Oracle的setup.exe一闪而过;Oracle安装后的默认账号和密码

    双击Oracle解压包之后的setup exe之后 xff0c 界面一闪而过 xff0c 主要是如下三种原因 1 安装路径不要包含中文 2 安装路径不要包含空格 3 右击 xff0c 选择 以管理员身份运行 顺带提下Oracle安装之后的默
  • Java--Stream流详解

    Stream 是Java 8 API添加的一个新的抽象 xff0c 称为流Stream xff0c 以一种声明性方式处理数据集合 xff08 侧重对于源数据计算能力的封装 xff0c 并且支持序列与并行两种操作方式 xff09 Stream
  • Kubernetes - Kubernetes详解;安装部署(一)

    一 Kubernetes Kubernetes 这个单词源于希腊语 xff0c 意为 舵手 或 飞行员 Kubernetes xff0c 也称为K8S xff0c 其中8是代表中间 ubernete 的8个字符 xff0c 是Google在
  • Shiro - Shiro简介;Shiro与Spring Security区别;Spring Boot集成Shiro

    一 Shiro 以下引自百度百科 shiro xff08 java安全框架 xff09 百度百科 Apache Shiro是一个强大且易用的Java安全框架 xff0c 执行身份验证 授权 密码和会话管理 使用Shiro的易于理解的API
  • 最近

    距离软考还有 3 天的时间 xff0c 该复习的都复习了 xff0c 复习不到的知识点也只有搁置了 任何事情都不可能是完美的 xff0c 软考也一样 xff0c 要的只是追求完美的过程 xff0c 结果重要但是过程更重要 复习到现在感觉基础
  • 微信小程序-微信小程序登录流程(一)

    微信小程序 xff0c 小程序的一种 xff0c 英文名Wechat Mini Program xff0c 是一种不需要下载安装即可使用的应用 xff0c 它实现了应用 触手可及 的梦想 xff0c 用户扫一扫或搜一下即可打开应用 冷启动
  • 微信小程序-获取不限制的小程序码(二)

    一 获取小程序码 获取小程序码 微信开放文档 与 createQRCode 总共生成的码数量限制为 100 000 xff0c 请谨慎调用 调用方式 HTTPS 调用 POST https api weixin qq com wxa get
  • 微信-微信退款(三)

    一 微信申请退款 微信支付退款 API 地址 https pay weixin qq com wiki doc api app app php chapter 61 9 4 amp index 61 6 应用场景 当交易发生之后一段时间内
  • iOS-UILabel根据文本、字体大小计算label宽度;以及自适应高度

    下载地址 GitHub源码 或者 Demo下载 想获得所有字体 xff0c 如下 xff1a 获取到所有的字体名称 NSArray familyNames 61 UIFont familyNames NSLog 64 34 所有字体名称 6
  • iOS开发Provisioning profile "iOS Team Provisioning Profile:xxx" doesn't include signing certificate

    连接真机设备时爆红 因博主忘了截图已经处理过的截图 问题如下 xff1a Provisioning profile 34 iOS Team Provisioning Profile com xxx xxx 34 doesn 39 t inc
  • clang-format的使用

    clang format使用 1 clang format简介2 clang format的使用2 1 clang format中 clang format file2 2 示例 xff1a 配置google的代码风格2 3 vscode
  • NVIDIA TX2i刷机过程记录

    毕业设计做的视觉系统 xff0c 需要用到TX2i xff0c 以下为本人疫情期间在家摸索了十几天 xff0c 才刷机成功的全过程 关于tx2i的注意点 xff1a 首先推荐买个usb扩展器 xff0c 因为只有2个usb口 xff0c 我
  • Java基础(五):重写toString()方法

    目录 1 Object 类的 toString 2 重写toString 方法意义 3 总结 1 Object 类的 toString Java默认的toString方法来自Object类 在Java中每个类都直接或者间接继承Object类
  • Mysql基础(十九):锁

    目录 1 Mysql锁机制 1 1 乐观锁和悲观锁 1 1 1 乐观锁 1 1 2 悲观锁 1 2 共享锁与排他锁 1 2 1 共享锁 1 2 2 排他锁 1 3 行锁与表锁 1 3 1 行锁 1 3 2 表锁 1 4 间隙锁 1 4 1
  • 大数据时代的图表可视化利器——highcharts,D3和百度的echarts

    还记得阿里巴巴那个令人澎湃激情的双十一吗 xff1f 还记得淘宝生动形象地把你的的消费历程一一地展示给你看吗 xff1f 还记得那些酷炫拽的it报告图表吗 xff1f 在这个大数据越来越盛行的年代 xff0c 怎样去表达一些用户的关系 xf
  • 对三层和MVC的认识过程

    三层架构就是 MVC xff01 起初老师总说三层 MVC xff0c MVC 三层架构 所以开始的时候脑子就一个概念 xff1a 三层就是 MVC xff0c MVC 就是三层架构 而且想想也合理啊 xff0c 都是 三 MVC 是三个字
  • ROS雷达包出现:ERROR: cannot launch node of type: rplidar_ros

    ROS雷达包出现 xff1a ERROR cannot launch node of type rplidar ros 问题分析详情 问题分析 仅安装了基础ROS xff0c rplidar ros包没有安装 详情 下载包并解压缩 1 使用
  • nvidia-smi出现的比较慢

    一个比较老的问题 xff0c 一般四卡以上的机器可能会出现 以前我都是 nvidia span class hljs attribute smi span span class hljs attribute pm span span cla
  • 【tensorflow】tensorflow的安装及应用

    安装tensorflow的三种方法 1 在cmd命令行中输入pip install tensorflow xff0c 默认安装最新版 2 其他旧版本的安装 xff0c 去pypi org官网 可以点击release history选择想要的