深度学习TensorFlow框架

2024-09-04 17:04

本文主要是介绍深度学习TensorFlow框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

深度学习介绍

深度学习和机器学习区别

机器有人工参与,而深度学习是靠网络;

深度学习需要大量的数据集,训练神经网络需要大量的算力

机器学习有:朴素贝叶斯,决策树等

深度学习主要是神经网络

深度学习应用场景

CV:物体识别,场景识别,车型认识,人脸检测跟踪,人脸关键点跟踪,人脸身份认证

NPL:机器翻译 文本识别 聊天对话

语音技术:语音识别

TensorFlow框架的使用

结构

各个组件

 图

什么是图结构

图结构就是数据(Tensor)加操作(operation)

2 图相关操作

new_g = tf.Graph()

with new_g.as_default();

用TensorBoard:可视化学习

1.

2启动

OP

操作函数

tf.constant(Tensor对象)   Const

tf.add(Tensor1,Tensor2)        Add对象

指令名称

会话

开启会话的俩种方式:

#         tf.Session:用于完整的程序当中
#         tf.InteractiveSession:用于交互式上下文中的TensorFlow ,例如shell
#         1)会话掌握资源,用完要回收 - 上下文管理器
#         2)初始化会话对象时的参数
#             graph=None
#             target:如果将此参数留空(默认设置),
#             会话将仅使用本地计算机中的设备。
#             可以指定 grpc:// 网址,以便指定 TensorFlow 服务器的地址,
#             这使得会话可以访问该服务器控制的计算机上的所有设备。
#             config:此参数允许您指定一个 tf.ConfigProto
#             以便控制会话的行为。例如,ConfigProto协议用于打印设备使用信息
#         3)run(fetches,feed_dict=None)
#         3 feed操作
#             a = tf.placeholder(tf.float32, shape=)
#             b = tf.placeholder(tf.float32, shape=)

张量

两个属性:type 和shape

 #    张量Tensor
#     print()
#     ndarray  # 张量值的类型 当在会话中返回的类型
#     2.4.1 张量(Tensor)
#         张量 在计算机当中如何存储?
#         标量 一个数字                 0阶张量
#         向量 一维数组 [2, 3, 4]       1阶张量
#         矩阵 二维数组 [[2, 3, 4],     2阶张量
#                     [2, 3, 4]]
#         ……
#         张量 n维数组                  n阶张量
#         1 张量的类型
#         2 张量的阶
#         创建张量的时候,如果不指定类型
#         默认 tf.float32
#             整型 tf.int32
#             浮点型 tf.float32
#         张量(Tensor)
#         张量 在计算机当中如何存储?
#         标量 一个数字                 0阶张量
#         向量 一维数组 [2, 3, 4]       1阶张量
#         矩阵 二维数组 [[2, 3, 4],     2阶张量
#                     [2, 3, 4]]
#         ……
#         张量 n维数组                  n阶张量
#         1 张量的类型
#         2 张量的阶
#         创建张量的时候,如果不指定类型
#         默认 tf.float32
#             整型 tf.int32
#             浮点型 tf.float32
#     2.4.2 创建张量的指令
#     2.4.3 张量的变换
#         ndarray属性的修改
#             类型的修改
#                 1)ndarray.astype(type)
#                 tf.cast(tensor, dtype)
#                     不会改变原始的tensor
#                     返回新的改变类型后的tensor
#                 2)ndarray.tostring()
#             形状的修改
#                 1)ndarray.reshape(shape)
#                     -1 自动计算形状
#                 2)ndarray.resize(shape)
#                 静态形状 - 初始创建张量时的形状
#                 1)如何改变静态形状
#                     什么情况下才可以改变/更新静态形状?
#                         只有在形状没有完全固定下来的情况下
#                     tensor.set_shape(shape)
#                 2)如何改变动态形状
#                     tf.reshape(tensor, shape)
#                     不会改变原始的tensor
#                     返回新的改变形状后的tensor
#                     动态创建新张量时,张量的元素个数必须匹配

变量

创建变量

def variable_demo():"""变量的演示:return:"""# 创建变量with tf.variable_scope("my_scope"):a = tf.Variable(initial_value=50)b = tf.Variable(initial_value=40)with tf.variable_scope("your_scope"):c = tf.add(a, b)print("a:\n", a)print("b:\n", b)print("c:\n", c)# 初始化变量init = tf.global_variables_initializer()# 开启会话with tf.Session() as sess:# 运行初始化sess.run(init)a_value, b_value, c_value = sess.run([a, b, c])print("a_value:\n", a_value)print("b_value:\n", b_value)print("c_value:\n", c_value)return None
#     TensorFlow - 变量
#     存储模型参数
#     1 创建变量
#         变量需要显式初始化,才能运行值
#     2 使用tf.variable_scope()修改变量的命名空间
#         使得结构更加清晰

API

通过TensorFlow官方文档去看

线性回归案例(用TensorFlow)

7.1 线性回归原理复习1)构建模型y = w1x1 + w2x2 + …… + wnxn + b2)构造损失函数均方误差3)优化损失梯度下降
7.2 案例:实现线性回归的训练准备真实数据100样本x 特征值 形状 (100, 1)y_true 目标值 (100, 1)y_true = 0.8x + 0.7假定x 和 y 之间的关系 满足y = kx + bk ≈ 0.8 b ≈ 0.7流程分析:(100, 1) * (1, 1) = (100, 1)y_predict = x * weights(1, 1) + bias(1, 1)1)构建模型y_predict = tf.matmul(x, weights) + bias2)构造损失函数error = tf.reduce_mean(tf.square(y_predict - y_true))3)优化损失optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)5 学习率的设置、步数的设置与梯度爆炸
7.3 增加其他功能1 增加变量显示1)创建事件文件2)收集变量3)合并变量4)每次迭代运行一次合并变量5)每次迭代将summary对象写入事件文件2 增加命名空间3 模型的保存与加载saver = tf.train.Saver(var_list=None,max_to_keep=5)1)实例化Saver2)保存saver.save(sess, path)3)加载saver.restore(sess, path)4 命令行参数使用1)tf.app.flagstf.app.flags.DEFINE_integer("max_step", 0, "训练模型的步数")tf.app.flags.DEFINE_string("model_dir", " ", "模型保存的路径+模型名字")2)FLAGS = tf.app.flags.FLAGS通过FLAGS.max_step调用命令行中传过来的参数3、通过tf.app.run()启动main(argv)函数

总结

这篇关于深度学习TensorFlow框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136506

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

MyBatis分页插件PageHelper深度解析与实践指南

《MyBatis分页插件PageHelper深度解析与实践指南》在数据库操作中,分页查询是最常见的需求之一,传统的分页方式通常有两种内存分页和SQL分页,MyBatis作为优秀的ORM框架,本身并未提... 目录1. 为什么需要分页插件?2. PageHelper简介3. PageHelper集成与配置3.

Maven 插件配置分层架构深度解析

《Maven插件配置分层架构深度解析》:本文主要介绍Maven插件配置分层架构深度解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Maven 插件配置分层架构深度解析引言:当构建逻辑遇上复杂配置第一章 Maven插件配置的三重境界1.1 插件配置的拓扑

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component