机器学习——Tensorflow基础-5

文章目录

    • 认识Tensorflow
    • Tensorflow特点
    • Tensorflow加法运算
    • Tensorflow进阶
    • 哪些是op
    • 图的创建
    • 会话
    • 会话的run()方法
    • Tensorflow Feed操作
    • 张量
    • 关闭警告
    • 张量的阶和数据类型
    • 张量的阶
    • 张量的数据类型
    • 张量属性
    • 张量的动态形状与静态形状
    • 要点
    • 张量操作-生成张量
    • 正态分布
    • 张量操作-张量变换
    • 切片与扩展
    • 变量
    • 变量
    • 变量的创建
    • 变量的初始化
    • 可视化学习Tensorboard
    • 图中的符号意义
    • 增加变量显示
    • tensorflow实现一个简单的线性回归案例
    • Tensorflow运算API
    • 梯度下降API
    • Tensorboard观察图结构,变量显示
    • 作用域
    • tensorflow变量作用域
    • 如果在之前,给变量取相同的name会出现什么样的情况?
    • tensorflow变量作用域的作用
    • 模型保存和加载
    • 自定义命令行参数

1、深度学习介绍

2、认识Tensorflow

3、Tensorflow的安装

4、Tensorflow初体验

5、Tensorflow进阶

6、案例:实现线性回归
在这里插入图片描述
在这里插入图片描述

认识Tensorflow

在这里插入图片描述

Tensorflow特点

1、真正的可移植性
引入各种计算设备的支持包括CPU/GPU/TPU,以及能够很好地运行在移动端,
如安卓设备、ios、树莓派等等

2、多语言支持
Tensorflow 有一个合理的c++使用界面,也有一个易用的python使用界面来构建和
执行你的graphs,你可以直接写python/c++程序。

3、高度的灵活性与效率
TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库
能够灵活进行组装图,执行图。随着开发的进展,Tensorflow的效率不算在提高

4、支持
TensorFlow 由谷歌提供支持,谷歌投入了大量精力开发 TensorFlow,它希望
TensorFlow 成为机器学习研究人员和开发人员的通用语言

Tensorflow加法运算

在这里插入图片描述

Tensorflow进阶

1、图
2、会话
3、张量
4、变量
5、模型保存和加载
6、自定义命令行参数

图默认已经注册,一组表示 tf.Operation计算单位的对象和tf.Tensor
表示操作之间流动的数据单元的对象
获取调用:
tf.get_default_graph()
op、sess或者tensor 的graph属性

哪些是op

在这里插入图片描述

图的创建

tf.Graph()


使用新创建的图

 g = tf.Graph()
 with g.as_default():
 a = tf.constant(1.0)
 assert c.graph is g

会话

tf.Session()
运行TensorFlow操作图的类,使用默认注册的图(可以指定运行图)

会话资源
会话可能拥有很多资源,如 tf.Variable,tf.QueueBase
和tf.ReaderBase,会话结束后需要进行资源释放

sess = tf.Session() sess.run(…) sess.close()
使用上下文管理器
with tf.Session() as sess:
 sess.run(…)

config=tf.ConfigProto(log_device_placement=True)
交互式:tf.InteractiveSession()

会话的run()方法

run(fetches, feed_dict=None,graph=None)
 运行ops和计算tensor
嵌套列表,元组,
namedtuple,dict或OrderedDict(重载的运算符也能运行)

feed_dict 允许调用者覆盖图中指定张量的值,提供给
placeholder使用

返回值异常
 RuntimeError:如果它Session处于无效状态(例如已关闭)。
 TypeError:如果fetches或feed_dict键是不合适的类型。
ValueError:如果fetches或feed_dict键无效或引用 Tensor不存在。

Tensorflow Feed操作

意义:在程序执行的时候,不确定输入的是什么,提前“占个坑”

在这里插入图片描述

语法:placeholder提供占位符,run时候通过feed_dict指定参数

张量

1、张量的阶和数据类型

2、张量操作

关闭警告

import os
os.environ[‘TF_CPP_MIN_LOG_LEVEL’]=‘2’

张量的阶和数据类型

Tensorflow基本的数据格式

一个类型化的N维度数组(tf.Tensor)

三部分,名字,形状,数据类型

张量的阶

在这里插入图片描述

张量的数据类型

在这里插入图片描述

张量属性

graph 张量所属的默认图


op 张量的操作名


name 张量的字符串描述


shape 张量形状
在这里插入图片描述

张量的动态形状与静态形状

TensorFlow中,张量具有静态形状和动态形状

静态形状:
创建一个张量或者由操作推导出一个张量时,初始状态的形状
tf.Tensor.get_shape:获取静态形状
tf.Tensor.set_shape():更新Tensor对象的静态形状,通常用于在不能直接推
断的情况下


动态形状:
一种描述原始张量在执行过程中的一种形状
tf.reshape:创建一个具有不同动态形状的新张量

要点

1、转换静态形状的时候,1-D到1-D,2-D到2-D,不能跨阶数改变形状

2、 对于已经固定或者设置静态形状的张量/变量,不能再次设置静态形状

3、tf.reshape()动态创建新张量时,元素个数不能不匹配

张量操作-生成张量

在这里插入图片描述
在这里插入图片描述
为什么需要正态分布的变量值?

正态分布

概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ
决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。
在这里插入图片描述
在这里插入图片描述

张量操作-张量变换

在这里插入图片描述
在这里插入图片描述

切片与扩展

tf.concat(values, axis, name=‘concat’)
提供给Tensor运算的数学函数
https://www.tensorflow.org/versions/r1.0/api_guides/python/math_ops
算术运算符
基本数学函数
矩阵运算
减少维度的运算(求均值)
序列运算
注:这些都是在1.0版本下的函数,不同版本会有些差异

变量

1、变量的创建

2、变量的初始化

3、变量的作用域

变量

变量也是一种OP,是一种特殊的张量,能够进行存储持久化,它的
值就是张量

变量的创建

tf.Variable(initial_value=None,name=None)
创建一个带值initial_value的新变量


assign(value)
为变量分配一个新值
返回新值
eval(session=None)
计算并返回此变量的值

name属性表示变量名字

变量的初始化

tf.global_variables_initializer()
添加一个初始化所有变量的op

在会话中开启

可视化学习Tensorboard

数据序列化-events文件
TensorBoard 通过读取 TensorFlow 的事件文件来运行


tf.summary.FileWriter(’/tmp/tensorflow/summary/test/’, graph=
default_graph)
返回filewriter,写入事件文件到指定目录(最好用绝对路径),以提供给tensorboard使用


开启
tensorboard --logdir=/tmp/tensorflow/summary/test/

一般浏览器打开为127.0.0.1:6006

注:修改程序后,再保存一遍会有新的事件文件,打开默认为最新

图中的符号意义

在这里插入图片描述

增加变量显示

目的:观察模型的参数、损失值等变量值的变化
1、收集变量
tf.summary.scalar(name=’’,tensor) 收集对于损失函数和准确率
等单值变量,name为变量的名字,tensor为值
tf.summary.histogram(name=‘’,tensor) 收集高维度的变量参数
tf.summary.image(name=‘’,tensor) 收集输入的图片张量能显示图片

2、合并变量写入事件文件
merged = tf.summary.merge_all()
运行合并:summary = sess.run(merged),每次迭代都需运行
添加:FileWriter.add_summary(summary,i),i表示第几次的值

tensorflow实现一个简单的线性回归案例

简单的API介绍

线性回归实现
结果演示
在这里插入图片描述

Tensorflow运算API

矩阵运算
tf.matmul(x, w)

平方
tf.square(error)

均值
tf.reduce_mean(error)

梯度下降API

tf.train.GradientDescentOptimizer(learning_rate)
 梯度下降优化
learning_rate:学习率,一般为

method:

return:梯度下降op

Tensorboard观察图结构,变量显示

在这里插入图片描述

作用域

一个变量的作用域?

tensorflow变量作用域

tf.variable_scope(<scope_name>)创建指定名字的
变量作用域

观察变量的name改变?


嵌套使用变量作用域

观察变量的name改变?

如果在之前,给变量取相同的name会出现什么样的情况?

在这里插入图片描述

tensorflow变量作用域的作用

让模型代码更加清晰,作用分明

模型保存和加载

tf.train.Saver(var_list=None,max_to_keep=5)
var_list:指定将要保存和还原的变量。它可以作为一个
dict或一个列表传递.
max_to_keep:指示要保留的最近检查点文件的最大数量。
创建新文件时,会删除较旧的文件。如果无或0,则保留所有
检查点文件。默认为5(即保留最新的5个检查点文件。)

例如:saver.save(sess, ‘/tmp/ckpt/test/model’)
saver.restore(sess, ‘/tmp/ckpt/test/model’)
保存文件格式:checkpoint文件

自定义命令行参数

1、在这里插入图片描述

2、 tf.app.flags.,在flags有一个FLAGS标志,它在程序中可以调用到我们
前面具体定义的flag_name

3、通过tf.app.run()启动main(argv)函数
在这里插入图片描述

热门文章

暂无图片
编程学习 ·

C语言二分查找详解

二分查找是一种知名度很高的查找算法&#xff0c;在对有序数列进行查找时效率远高于传统的顺序查找。 下面这张动图对比了二者的效率差距。 二分查找的基本思想就是通过把目标数和当前数列的中间数进行比较&#xff0c;从而确定目标数是在中间数的左边还是右边&#xff0c;将查…
暂无图片
编程学习 ·

GMX 命令分类列表

建模和计算操作命令&#xff1a; 1.1 . 创建拓扑与坐标文件 gmx editconf - 编辑模拟盒子以及写入子组(subgroups) gmx protonate - 结构质子化 gmx x2top - 根据坐标生成原始拓扑文件 gmx solvate - 体系溶剂化 gmx insert-molecules - 将分子插入已有空位 gmx genconf - 增加…
暂无图片
编程学习 ·

一文高效回顾研究生课程《数值分析》重点

数值分析这门课的本质就是用离散的已知点去估计整体&#xff0c;就是由黑盒子产生的结果去估计这个黑盒子。在数学里这个黑盒子就是一个函数嘛&#xff0c;这门课会介绍许多方法去利用离散点最大化地逼近这个函数&#xff0c;甚至它的导数、积分&#xff0c;甚至微分方程的解。…
暂无图片
编程学习 ·

在职阿里5年,一个28岁女软测工程师的心声

简单的先说一下&#xff0c;坐标杭州&#xff0c;14届本科毕业&#xff0c;算上年前在阿里巴巴的面试&#xff0c;一共有面试了有6家公司&#xff08;因为不想请假&#xff0c;因此只是每个晚上去其他公司面试&#xff0c;所以面试的公司比较少&#xff09; ​ 编辑切换为居中…
暂无图片
编程学习 ·

字符串左旋c语言

目录 题目&#xff1a; 解题思路&#xff1a; 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 总代码&#xff1a; 题目&#xff1a; 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符…
暂无图片
编程学习 ·

设计模式--观察者模式笔记

模式的定义与特点 观察者&#xff08;Observer&#xff09;模式的定义&#xff1a;指多个对象间存在一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式&#xf…
暂无图片
编程学习 ·

睡觉突然身体动不了,什么是睡眠痽痪症

很多朋友可能有这样的体验&#xff0c;睡觉过程中突然意识清醒&#xff0c;身体却动弹不了。这时候感觉非常恐怖&#xff0c;希望旁边有一个人推自己一下。阳光以前也经常会碰到这样的情况&#xff0c;一年有一百多次&#xff0c;那时候很害怕晚上到来&#xff0c;睡觉了就会出…
暂无图片
编程学习 ·

深入理解C++智能指针——浅析MSVC源码

文章目录unique_ptrshared_ptr 与 weak_ptrstd::bad_weak_ptr 异常std::enable_shared_from_thisunique_ptr unique_ptr 是一个只移型别&#xff08;move-only type&#xff0c;只移型别还有std::mutex等&#xff09;。 结合一下工厂模式&#xff0c;看看其基本用法&#xff…
暂无图片
编程学习 ·

@TableField(exist = false)

TableField(exist false) //申明此字段不在数据库存在&#xff0c;但代码中需要用到它&#xff0c;通知Mybatis-plus在做写库操作是忽略它。,.
暂无图片
编程学习 ·

Java Web day15

第十二章文件上传和下载 一、如何实现文件上传 要实现Web开发中的文件上传功能&#xff0c;通常需要完成两步操作&#xff1a;一.是在Web页面中添加上传输入项&#xff1b;二是在Servlet中读取上传文件的数据&#xff0c;并保存到本地硬盘中。 需要使用一个Apache组织提供一个…
暂无图片
编程学习 ·

【51nod 2478】【单调栈】【前缀和】小b接水

小b接水题目解题思路Code51nod 2478 小b接水 题目 输入样例 12 0 1 0 2 1 0 1 3 2 1 2 1输出样例 6解题思路 可以发现最后能拦住水的都是向两边递减高度&#xff08;&#xff1f;&#xff09; 不管两个高积木之间的的积木是怎样乱七八糟的高度&#xff0c;最后能用来装水的…
暂无图片
编程学习 ·

花了大半天写了一个UVC扩展单元调试工具

基于DIRECTSHOW 实现的&#xff0c;用的是MFC VS2019. 详见&#xff1a;http://www.usbzh.com/article/detail-761.html 获取方法 加QQ群:952873936&#xff0c;然后在群文件\USB调试工具&测试软件\UVCXU-V1.0(UVC扩展单元调试工具-USB中文网官方版).exe USB中文网 USB中文…
暂无图片
编程学习 ·

贪心(一):区间问题、Huffman树

区间问题 例题一&#xff1a;区间选点 给定 N 个闭区间 [ai,bi]请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N&#xff0c;表示区间数。 接下来 …
暂无图片
编程学习 ·

C语言练习实例——费氏数列

目录 题目 解法 输出结果 题目 Fibonacci为1200年代的欧洲数学家&#xff0c;在他的着作中曾经提到&#xff1a;「若有一只免子每个月生一只小免子&#xff0c;一个月后小免子也开始生产。起初只有一只免子&#xff0c;一个月后就有两只免子&#xff0c;二个月后有三只免子…
暂无图片
编程学习 ·

Android开发(2): Android 资源

个人笔记整理 Android 资源 Android中的资源&#xff0c;一般分为两类&#xff1a; 系统内置资源&#xff1a;Android SDK中所提供的已经定义好的资源&#xff0c;用户可以直接拿来使用。 用户自定义资源&#xff1a;用户自己定义或引入的&#xff0c;只适用于当前应用的资源…
暂无图片
编程学习 ·

零基础如何在短时间内拿到算法offer

​算法工程师是利用算法处理事物的职业 算法&#xff08;Algorithm&#xff09;是一系列解决问题的清晰指令&#xff0c;也就是说&#xff0c;能够对一定规范的输入&#xff0c;在有限时间内获得所要求的输出。 如果一个算法有缺陷&#xff0c;或不适合于某个问题&#xff0c;执…
暂无图片
编程学习 ·

人工智能:知识图谱实战总结

人工智能python&#xff0c;NLP&#xff0c;知识图谱&#xff0c;机器学习&#xff0c;深度学习人工智能&#xff1a;知识图谱实战前言一、实体建模工具Protegepython&#xff0c;NLP&#xff0c;知识图谱&#xff0c;机器学习&#xff0c;深度学习 人工智能&#xff1a;知识图…
暂无图片
编程学习 ·

【无标题】

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…