深度学习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

相关文章

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

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

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

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

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