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

相关文章

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR