【深度学习】深度学习md笔记总结第1篇:深度学习课程,要求【附代码文档】

深度学习笔记完整教程(附代码资料)主要内容讲述:深度学习课程,深度学习介绍要求,目标,学习目标,1.1.1 区别。TensorFlow介绍,2.2 图与TensorBoard学习目标,2.2.1 什么是图结构,2.2.2 图相关操作,2.2.3 TensorBoard:可视化学习。TensorFlow介绍,2.4 张量学习目标,2.4.1 张量(Tensor),2.4.2 创建张量的指令,2.4.3 张量的变换。TensorFlow介绍,2.7 案例:实现线性回归学习目标,2.7.1 线性回归原理复习,2.7.2 案例:实现线性回归的训练,2.7.3 增加其他功能。TensorFlow介绍,1.2 神经网络基础学习目标。TensorFlow介绍,总结学习目标,1.3.1 神经网络,1.3.2 playground使用。神经网络与tf.keras,1.4 神经网络原理学习目标,1.4.1 softmax回归,1.4.2 交叉熵损失,1.4.3 梯度下降算法。神经网络与tf.keras,1.3 Tensorflow实现神经网络学习目标,1.3.1 TensorFlow keras介绍,1.3.2 案例:实现多层神经网络进行时装分类。神经网络与tf.keras,1.4 深层神经网络学习目标。神经网络与tf.keras,总结。卷积神经网络,3.1 卷积神经网络(CNN)原理学习目标。卷积神经网络,3.1 卷积神经网络(CNN)原理学习目标。卷积神经网络,2.2案例:CIFAR100类别分类学习目标,2.2.1 CIFAR100数据集介绍,2.2.2 API 使用,2.2.3 步骤分析以及代码实现(缩减版LeNet5)。卷积神经网络,2.2 梯度下降算法改进学习目标。卷积神经网络,2.4 BN与神经网络调优学习目标。卷积神经网络,2.4 经典分类网络结构学习目标,2.4.6 案例:使用pre_trained模型进行VGG预测,2.4.7 总结。卷积神经网络,2.5 CNN网络实战技巧学习目标。卷积神经网络,3.1 迁移学习案例3.1.1 案例:基于VGG对五种图片类别识别的迁移学习,3.1.2 数据增强的作用。卷积神经网络,总结学习目标,1.1.1 项目演示,1.1.2 项目结构,1.1.3 项目知识点。商品物体检测项目介绍,3.3 R-CNN。商品物体检测项目介绍,3.4 Fast R-CNN。YOLO与SSD,3.6 YOLO(You only look once)。YOLO与SSD,4.3 案例:SSD进行物体检测4.3.1 案例效果,4.3.2 案例需求,4.3.3 步骤分析以及代码,2.1.1 常用目标检测数据集。商品检测数据集训练,5.2 标注数据读取与存储5.2.1 案例:xml读取本地文件存储到pkl,5.3.1 案例训练结果,5.3.2 案例思路,5.3.3 多GPU训练代码修改。

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~


全套教程部分目录:


部分文件图片:

深度学习课程

要求

  • 熟练掌握机器学习基础,如分类、回归
  • 熟练掌握numpy,pandas,sklearn等框架使用

目标

  • 算法

  • 掌握神经网络的数学原理

  • 手动实现简单的神经网络结构

  • 应用

  • 熟练掌握TensorFlow框架使用

  • 掌握神经网络图像相关案例

深度学习介绍

1.1 深度学习与机器学习的区别

学习目标

  • 目标

  • 知道深度学习与机器学习的区别

  • 应用

1.1.1 区别

区别

1.1.1.1 特征提取方面

  • 机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识
  • 深度学习通常由多个层组成,它们通常将更简单的模型组合在一起,通过将数据从一层传递到另一层来构建更复杂的模型。通过大量数据的训练自动得到模型,不需要人工设计特征提取环节

    深度学习算法试图从数据中学习高级功能,这是深度学习的一个非常独特的部分。因此,减少了为每个问题开发新特征提取器的任务。适合用在难提取特征的图像、语音、自然语言领域

1.1.1.2 数据量

机器学习需要的执行时间远少于深度学习,深度学习参数往往很庞大,需要通过大量数据的多次优化来训练参数。

数据量

第一、它们需要大量的训练数据集

第二、是训练深度神经网络需要大量的算力

可能要花费数天、甚至数周的时间,才能使用数百万张图像的数据集训练出一个深度网络。所以以后

  • 需要强大对的GPU服务器来进行计算
  • 全面管理的分布式训练与预测服务——比如[谷歌 TensorFlow 云机器学习平台]( CPU 和 GPU

1.1.2 算法代表

  • 机器学习

  • 朴素贝叶斯、决策树等

  • 深度学习

  • 神经网络

深度学习的应用场景

学习目标

  • 目标

  • 知道深度学习的主要应用场景

  • 应用

  • 图像识别

  • 物体识别

  • 场景识别
  • 车型识别
  • 人脸检测跟踪
  • 人脸关键点定位
  • 人脸身份认证

  • 自然语言处理技术

  • 机器翻译

  • 文本识别
  • 聊天对话

  • 语音技术

  • 语音识别

1.2 深度学习框架介绍

学习目标

  • 目标

  • 了解常见的深度学习框架

  • 了解TensorFlow框架

  • 应用

1.2.1 常见深度学习框架对比

框架关注

tensorflow的github:

1.2.2 TensorFlow的特点

tensorflow

官网:[

  • 语言多样(Language Options)

  • TensorFlow使用C++实现的,然后用Python封装。谷歌号召社区通过SWIG开发更多的语言接口来支持TensorFlow

  • 使用分发策略进行分发训练

  • 对于大型 ML 训练任务,分发策略 API使在不更改模型定义的情况下,可以轻松地在不同的硬件配置上分发和训练模型。由于 TensorFlow 支持一系列硬件加速器,如 CPU、GPU 和 TPU

  • Tensorboard可视化

  • TensorBoard是TensorFlow的一组Web应用,用来监控TensorFlow运行过程

  • 在任何平台上的生产中进行强大的模型部署

一旦您训练并保存了模型,就可以直接在应用程序中执行它,或者使用部署库为其提供服务:

  • [TensorFlow 服务]( HTTP/REST 或 GRPC/协议缓冲区提供服务的 TensorFlow 库构建。
  • [TensorFlow Lite]( 针对移动和嵌入式设备的轻量级解决方案提供了在 Android、iOS 和嵌入式系统上部署模型的能力。
  • [tensorflow.js]( JavaScript 环境中部署模型,例如在 Web 浏览器或服务器端通过 Node.js 部署模型。TensorFlow.js 还支持在 JavaScript 中定义模型,并使用类似于 Kera 的 API 直接在 Web 浏览器中进行训练。

1.2.3 TensorFlow的安装

安装 TensorFlow在64 位系统上测试这些系统支持 TensorFlow:

  • Ubuntu 16.04 或更高版本
  • Windows 7 或更高版本
  • macOS 10.12.6 (Sierra) 或更高版本(不支持 GPU)

进入虚拟环境当中再安装。刚开始的环境比较简单,只要下载tensorflow即可

  • 环境包:

安装较慢,指定镜像源,请在带有numpy等库的虚拟环境中安装

  • ubuntu安装

python pip install tensorflow==1.12 -i

  • MacOS安装

python pip install tensorflow==1.12 -i

注:如果需要下载GPU版本的(TensorFlow只提供windows和linux版本的,没有Macos版本的)参考官网[

1、虚拟机下linux也是用不了GPU版本TensorFlow

2、本机单独的windows和本机单独的unbuntu可以使用GPU版本TensorFlow,需要安装相关驱动

1.2.4 Tenssorlfow使用技巧

  • 使用**[tf.keras](
  • tensorflow提供模型训练模型部署

TensorFlow介绍

python 说明TensorFlow的数据流图结构 应用TensorFlow操作图 说明会话在TensorFlow程序中的作用 应用TensorFlow实现张量的创建、形状类型修改操作 应用Variable实现变量op的创建 应用Tensorboard实现图结构以及张量值的显示 应用tf.train.saver实现TensorFlow的模型保存以及加载 应用tf.app.flags实现命令行参数添加和使用 应用TensorFlow实现线性回归

2.1 TF数据流图

学习目标

  • 目标

  • 说明TensorFlow的数据流图结构

  • 应用

  • 内容预览

  • 2.1.1 案例:TensorFlow实现一个加法运算

    • 1 代码
    • 2 TensorFlow结构分析
  • 2.1.2 数据流图介绍

2.1.1 案例:TensorFlow实现一个加法运算

2.1.1.1 代码

```python def tensorflow_demo(): """ 通过简单案例来了解tensorflow的基础结构 :return: None """ # 一、原生python实现加法运算 a = 10 b = 20 c = a + b print("原生Python实现加法运算方法1:\n", c) def add(a, b): return a + b sum = add(a, b) print("原生python实现加法运算方法2:\n", sum)

# 二、tensorflow实现加法运算
a_t = tf.constant(10)
b_t = tf.constant(20)
# 不提倡直接运用这种符号运算符进行计算
# 更常用tensorflow提供的函数进行计算
# c_t = a_t + b_t
c_t = tf.add(a_t, b_t)
print("tensorflow实现加法运算:\n", c_t)
# 如何让计算结果出现?
# 开启会话
with tf.Session() as sess:
    sum_t = sess.run(c_t)
    print("在sess当中的sum_t:\n", sum_t)

return None

```

注意问题:警告指出你的CPU支持AVX运算加速了线性代数计算,即点积,矩阵乘法,卷积等。可以从源代码安装TensorFlow来编译,当然也可以选择关闭

python import os os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

2.1.1.2 TensorFlow结构分析

TensorFlow 程序通常被组织成一个构建图阶段和一个执行图阶段。

在构建阶段,数据与操作的执行步骤被描述成一个图。

在执行阶段,使用会话执行构建好的图中的操作。

  • 图和会话 :

  • 图:这是 TensorFlow 将计算表示为指令之间的依赖关系的一种表示法

  • 会话:TensorFlow 跨一个或多个本地或远程设备运行数据流图的机制

  • 张量:TensorFlow 中的基本数据对象

  • 节点:提供图当中执行的操作

2.1.2 数据流图介绍

![](https://img-blog.csdnimg.cn/direct/954f74da9a9c4f5282753e504f415c29.png) ![](https://img-blog.csdnimg.cn/direct/f8e2a39e72774545a89d64095e27eb35.png)

TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源框架。

节点(Operation)在图中表示数学操作,线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

TensorFlow介绍

python 说明TensorFlow的数据流图结构 应用TensorFlow操作图 说明会话在TensorFlow程序中的作用 应用TensorFlow实现张量的创建、形状类型修改操作 应用Variable实现变量op的创建 应用Tensorboard实现图结构以及张量值的显示 应用tf.train.saver实现TensorFlow的模型保存以及加载 应用tf.app.flags实现命令行参数添加和使用 应用TensorFlow实现线性回归

2.2 图与TensorBoard

学习目标

  • 目标

  • 说明图的基本使用

  • 应用tf.Graph创建图、tf.get_default_graph获取默认图
  • 知道开启TensorBoard过程
  • 知道图当中op的名字以及命名空间

  • 应用

  • 内容预览

  • 2.2.1 什么是图结构

  • 2.2.2 图相关操作

    • 1 默认图
    • 2 创建图
  • 2.2.3 TensorBoard:可视化学习

    • 1 数据序列化-events文件
    • 2 启动TensorBoard
  • 2.2.4 OP

    • 1 常见OP
    • 2 指令名称

2.2.1 什么是图结构

图包含了一组tf.Operation代表的计算单元对象和tf.Tensor代表的计算单元之间流动的数据。

2.2.2 图相关操作

1 默认图

通常TensorFlow会默认帮我们创建一张图。

查看默认图的两种方法:

  • 通过调用tf.get_default_graph()访问 ,要将操作添加到默认图形中,直接创建OP即可。
  • op、sess都含有graph属性 ,默认都在一张图中

```python def graph_demo(): # 图的演示 a_t = tf.constant(10) b_t = tf.constant(20) # 不提倡直接运用这种符号运算符进行计算 # 更常用tensorflow提供的函数进行计算 # c_t = a_t + b_t c_t = tf.add(a_t, b_t) print("tensorflow实现加法运算:\n", c_t)

# 获取默认图
default_g = tf.get_default_graph()
print("获取默认图:\n", default_g)

# 数据的图属性
print("a_t的graph:\n", a_t.graph)
print("b_t的graph:\n", b_t.graph)
# 操作的图属性
print("c_t的graph:\n", c_t.graph)

# 开启会话
with tf.Session() as sess:
    sum_t = sess.run(c_t)
    print("在sess当中的sum_t:\n", sum_t)
    # 会话的图属性
    print("会话的图属性:\n", sess.graph)

return None

```

2 创建图

  • 可以通过tf.Graph()自定义创建图

  • 如果要在这张图中创建OP,典型用法是使用tf.Graph.as_default()上下文管理器

```python def graph_demo(): # 图的演示 a_t = tf.constant(10) b_t = tf.constant(20) # 不提倡直接运用这种符号运算符进行计算 # 更常用tensorflow提供的函数进行计算 # c_t = a_t + b_t c_t = tf.add(a_t, b_t) print("tensorflow实现加法运算:\n", c_t)

# 获取默认图
default_g = tf.get_default_graph()
print("获取默认图:\n", default_g)

# 数据的图属性
print("a_t的graph:\n", a_t.graph)
print("b_t的graph:\n", b_t.graph)
# 操作的图属性
print("c_t的graph:\n", c_t.graph)

# 自定义图
new_g = tf.Graph()
print("自定义图:\n", new_g)
# 在自定义图中去定义数据和操作
with new_g.as_default():
    new_a = tf.constant(30)
    new_b = tf.constant(40)
    new_c = tf.add(new_a, new_b)

# 数据的图属性
print("new_a的graph:\n", new_a.graph)
print("new_b的graph:\n", new_b.graph)
# 操作的图属性
print("new_c的graph:\n", new_c.graph)

# 开启会话
with tf.Session() as sess:
    sum_t = sess.run(c_t)
    print("在sess当中的sum_t:\n", sum_t)
    # 会话的图属性
    print("会话的图属性:\n", sess.graph)
    # 不同的图之间不能互相访问
    # sum_new = sess.run(new_c)
    # print("在sess当中的sum_new:\n", sum_new)

with tf.Session(graph=new_g) as sess2:
    sum_new = sess2.run(new_c)
    print("在sess2当中的sum_new:\n", sum_new)
    print("会话的图属性:\n", sess2.graph)

# 很少会同时开启不同的图,一般用默认的图就够了
return None

```

TensorFlow有一个亮点就是,我们能看到自己写的程序的可视化效果,这个功能就是Tensorboard。在这里我们先简单介绍一下其基本功能。

2.2.3 TensorBoard:可视化学习

TensorFlow 可用于训练大规模深度神经网络所需的计算,使用该工具涉及的计算往往复杂而深奥。为了更方便 TensorFlow 程序的理解、调试与优化,TensorFlow提供了TensorBoard 可视化工具。

Tensorboard

实现程序可视化过程:

1 数据序列化-events文件

TensorBoard 通过读取 TensorFlow 的事件文件来运行,需要将数据生成一个序列化的 Summary protobuf 对象。

```python

返回filewriter,写入事件文件到指定目录(最好用绝对路径),以提供给tensorboard使用

tf.summary.FileWriter('./tmp/summary/test/', graph=sess.graph) ```

这将在指定目录中生成一个 event 文件,其名称格式如下:

python events.out.tfevents.{timestamp}.{hostname}

2 启动TensorBoard

python tensorboard --logdir="./tmp/tensorflow/summary/test/"

在浏览器中打开 TensorBoard 的图页面 [127.0.0.1:6006](

2.2.4 OP

2.2.4.1 常见OP

哪些是OP?

|类型|实例| |---|---| |标量运算|add, sub, mul, div, exp, log, greater, less, equal| |向量运算|concat, slice, splot, constant, rank, shape, shuffle| |矩阵运算|matmul, matrixinverse, matrixdateminant| |带状态的运算|Variable, assgin, assginadd| |神经网络组件|softmax, sigmoid, relu,convolution,max_pool| |存储, 恢复|Save, Restroe| |队列及同步运算|Enqueue, Dequeue, MutexAcquire, MutexRelease| |控制流|Merge, Switch, Enter, Leave, NextIteration|

一个操作对象(Operation)是TensorFlow图中的一个节点, 可以接收0个或者多个输入Tensor, 并且可以输出0个或者多个Tensor,Operation对象是通过op构造函数(如tf.matmul())创建的。

例如: c = tf.matmul(a, b) 创建了一个Operation对象,类型为 MatMul类型, 它将张量a, b作为输入,c作为输出,,并且输出数据,打印的时候也是打印的数据。其中tf.matmul()是函数,在执行matmul函数的过程中会通过MatMul类创建一个与之对应的对象

```python

实现一个加法运算

con_a = tf.constant(3.0) con_b = tf.constant(4.0)

sum_c = tf.add(con_a, con_b)

print("打印con_a:\n", con_a) print("打印con_b:\n", con_b) print("打印sum_c:\n", sum_c) ```

打印语句会生成:

python 打印con_a: Tensor("Const:0", shape=(), dtype=float32) 打印con_b: Tensor("Const_1:0", shape=(), dtype=float32) 打印sum_c: Tensor("Add:0", shape=(), dtype=float32)

注意,打印出来的是张量值,可以理解成OP当中包含了这个值。并且每一个OP指令都对应一个唯一的名称,如上面的Const:0,这个在TensorBoard上面也可以显示

请注意,tf.Tensor 对象以输出该张量的 tf.Operation 明确命名。张量名称的形式为 " : ",其中:

  • " " 是生成该张量的指令的名称
  • "" 是一个整数,它表示该张量在指令的输出中的索引

2.2.4.2 指令名称

tf.Graph对象为其包含的 tf.Operation对象定义的一个命名空间。TensorFlow 会自动为图中的每个指令选择一个唯一名称,用户也可以指定描述性名称,使程序阅读起来更轻松。我们可以以以下方式改写指令名称

  • 每个创建新的 tf.Operation 或返回新的 tf.Tensor 的 API 函数可以接受可选的 name 参数。

例如,tf.constant(42.0, name="answer") 创建了一个名为 "answer" 的新 tf.Operation 并返回一个名为 "answer:0" 的 tf.Tensor。如果默认图已包含名为 "answer" 的指令,则 TensorFlow 会在名称上附加 "1"、"2" 等字符,以便让名称具有唯一性。

  • 当修改好之后,我们在Tensorboard显示的名字也会被修改

python a = tf.constant(3.0, name="a") b = tf.constant(4.0, name="b" )

OP名字修改

2.3 会话

学习目标

  • 目标

  • 应用sess.run或者eval运行图程序并获取张量值

  • 应用feed_dict机制实现运行时填充数据
  • 应用placeholder实现创建占位符

  • 应用

  • 内容预览

  • 2.3.1 会话

    • 1 init(target='', graph=None, config=None)
    • 2 会话的run()
    • 3 feed操作

2.3.1 会话

一个运行TensorFlow operation的类。会话包含以下两种开启方式

  • tf.Session:用于完整的程序当中
  • tf.InteractiveSession:用于交互式上下文中的TensorFlow ,例如shell

    1 TensorFlow 使用 tf.Session 类来表示客户端程序(通常为 Python 程序,但也提供了使用其他语言的类似接口)与 C++ 运行时之间的连接

2 tf.Session 对象使用分布式 TensorFlow 运行时提供对本地计算机中的设备和远程设备的访问权限。

2.3.1.1 init(target='', graph=None, config=None)

会话可能拥有的资源,如 tf.Variable,tf.QueueBase和tf.ReaderBase。当这些资源不再需要时,释放这些资源非常重要。因此,需要调用tf.Session.close会话中的方法,或将会话用作上下文管理器。以下两个例子作用是一样的:

```python def session_demo(): """ 会话演示 :return: """

a_t = tf.constant(10)
b_t = tf.constant(20)
# 不提倡直接运用这种符号运算符进行计算
# 更常用tensorflow提供的函数进行计算
# c_t = a_t + b_t
c_t = tf.add(a_t, b_t)
print("tensorflow实现加法运算:\n", c_t)

# 开启会话
# 传统的会话定义
# sess = tf.Session()
# sum_t = sess.run(c_t)
# print("sum_t:\n", sum_t)
# sess.close()

# 开启会话
with tf.Session() as sess:
    # sum_t = sess.run(c_t)
    # 想同时执行多个tensor
    print(sess.run([a_t, b_t, c_t]))
    # 方便获取张量值的方法
    # print("在sess当中的sum_t:\n", c_t.eval())
    # 会话的图属性
    print("会话的图属性:\n", sess.graph)

return None

```

  • target:如果将此参数留空(默认设置),会话将仅使用本地计算机中的设备。可以指定 grpc:// 网址,以便指定 TensorFlow 服务器的地址,这使得会话可以访问该服务器控制的计算机上的所有设备。
  • graph:默认情况下,新的 tf.Session 将绑定到当前的默认图。
  • config:此参数允许您指定一个 tf.ConfigProto 以便控制会话的行为。例如,ConfigProto协议用于打印设备使用信息

```python

运行会话并打印设备信息

sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)) ```

会话可以分配不同的资源在不同的设备上运行。

python /job:worker/replica:0/task:0/device:CPU:0

device_type:类型设备(例如CPU,GPU,TPU)

2.3.1.2 会话的run()

  • run(fetches,feed_dict=None, options=None, run_metadata=None)
  • 通过使用sess.run()来运行operation
  • fetches:单一的operation,或者列表、元组(其它不属于tensorflow的类型不行)
  • feed_dict:参数允许调用者覆盖图中张量的值,运行时赋值

    • 与tf.placeholder搭配使用,则会检查值的形状是否与占位符兼容。

使用tf.operation.eval()也可运行operation,但需要在会话中运行

```python

创建图

a = tf.constant(5.0) b = tf.constant(6.0) c = a * b

创建会话

sess = tf.Session()

计算C的值

print(sess.run(c)) print(c.eval(session=sess)) ```

2.3.1.3 feed操作

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

python def session_run_demo(): """ 会话的run方法 :return: """ # 定义占位符 a = tf.placeholder(tf.float32) b = tf.placeholder(tf.float32) sum_ab = tf.add(a, b) print("sum_ab:\n", sum_ab) # 开启会话 with tf.Session() as sess: print("占位符的结果:\n", sess.run(sum_ab, feed_dict={a: 3.0, b: 4.0})) return None

请注意运行时候报的错误error:

python RuntimeError:如果这Session是无效状态(例如已关闭)。 TypeError:如果fetches或者feed_dict键的类型不合适。 ValueError:如果fetches或feed_dict键无效或引用 Tensor不存在的键。

未完待续, 同学们请等待下一期

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/274355.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据资产管理解决方案:构建高效、安全的数据生态体系

在数字化时代,数据已成为企业最重要的资产之一。然而,如何有效管理和利用这些数据资产,却是许多企业面临的难题。本文将详细介绍数据资产管理解决方案,帮助企业构建高效、安全的数据生态体系。 一、引言 在信息化浪潮的推动下&a…

Linux之线程同步

目录 一、问题引入 二、实现线程同步的方案——条件变量 1、常用接口&#xff1a; 2、使用示例 一、问题引入 我们再次看看上次讲到的多线程抢票的代码&#xff1a;这次我们让一个线程抢完票之后不去做任何事。 #include <iostream> #include <unistd.h> #inc…

PB-03F模组蓝牙基础+主从机指令的使用

文章目录 前言一、蓝牙基础指令1. ATBLEMAC 设置和查询蓝牙 MAC 地址2. ATBLEMODE 查询和设置蓝牙模式3. ATBLERFPWR 蓝牙设置或查询发射功率4. ATBLESTATE 查询连接状态5. ATBLEDISCON 断开蓝牙连接6. ATBLEMTU 查询或者设置 MTU7. ATBLESEND 向蓝牙透传通道发送数据8. ATTRAN…

mapstruct学习笔记-pojo之间的转换

1、前言 mapstruct中常用注解如Mapping,AfterMapping,BeanMapping等的使用,通过案例说明各式各样的业务pojo对象之间如何借助mapstruct完成相互之间的转换,减少代码量的同时也能突出业务逻辑流程,让你的代码里写起来更有规范可言。 2、简介 Reference Guide – MapStruct 3…

1-postgresql数据库高可用脚本详解

问题&#xff1a; pgrep -f postgres > /dev/null && echo 0 || pkill keepalived 这是什么意思 建议换成 pgrep -f postmaster > /dev/null && echo 0 || pkill keepalived 回答 这条命令是一个复合命令&#xff0c;包含条件执行和重定向的元素。让我们…

网站引用图片但它域名被墙了或者它有防盗链,我们想引用但又不能显示,本文附详细的解决方案非常简单!

最好的办法就是直接读取图片文件&#xff0c;用到php中一个常用的函数file_get_contents(图片地址)&#xff0c;意思是读取远程的一张图片&#xff0c;在输出就完事。非常简单&#xff5e;话不多说&#xff0c;直接上代码 <?php header("Content-type: image/jpeg&quo…

rviz上不显示机器人模型(模型只有白色)

文档中的是base_footprint&#xff0c;需要根据自己所设的坐标系更改&#xff0c;我的改为base_link 如何查看自己设的坐标系&#xff1a; 这些parent父坐标系就是 同时打开rviz后需要更改成base_link

openEuler 欧拉系统nginx正向代理 http https —— 筑梦之路

正向代理 Nginx正向代理&#xff0c;通过服务器代理客户端去重定向请求访问到目标服务器的一种代理服务。对于目标服务器来说浏览器/客户端是隐藏的。Nginx 正向代理默认只支持http 协议&#xff0c;不支持 https 协议&#xff0c;需借助"ngx_http_proxy_connect_module&q…

【数据结构取经之路】栈

目录 引言 栈的性质 顺序栈 栈的基本操作 初始化 销毁 插入 删除 判空 取栈顶元素 栈的大小 完整代码&#xff1a; 引言 栈(stack)&#xff0c;可以用数组实现&#xff0c;也可以用链表实现。用数组实现的栈叫顺序栈&#xff0c;用链表实现的栈叫链式栈&#…

使用uniapp,uni-data-select组件时,内容长度没超过容器宽度时候虽然能显示全内容但是数据后边会出现三个点,逼死强迫症

项目场景&#xff1a; 微信小程序开发&#xff0c;使用uniapp&#xff0c;uni-data-select组件时&#xff0c;内容长度没超过容器宽度时候虽然能显示全内容但是数据后边会出现三个点&#xff0c;逼死强迫症 解决方案&#xff1a; 找到组件的源代码&#xff0c;然后删除那三个…

鸿蒙实战开发:【FaultLoggerd组件】讲解

简介 Faultloggerd部件是OpenHarmony中C/C运行时崩溃临时日志的生成及管理模块。面向基于 Rust 开发的部件&#xff0c;Faultloggerd 提供了Rust Panic故障日志生成能力。系统开发者可以在预设的路径下找到故障日志&#xff0c;定位相关问题。 架构 Native InnerKits 接口 Si…

英伟达深夜放王炸|字节跳动游戏之路波折不断|文旅短剧风口将至|25岁QQ魅力不减,5亿人在用|云计算市场疯长152%|电商巨头齐瞄向富足悠闲银发族

新闻一分钟速览 文旅短剧风口将至&#xff0c;一地狂拍十部&#xff0c;影视界看法分歧&#xff0c;悬念丛生&#xff01;字节跳动游戏之路波折不断&#xff0c;能否逆风翻盘引关注。折叠屏手机痛症治愈&#xff0c;实力席卷高端市场&#xff0c;势头强劲&#xff01;雷军豪言…

刷题日记:面试经典 150 题 DAY6

刷题日记&#xff1a;面试经典 150 题 DAY6 392. 判断子序列167. 两数之和 II - 输入有序数组11. 盛最多水的容器15. 三数之和209. 长度最小的子数组 392. 判断子序列 原题链接 392. 判断子序列 双指针&#xff0c;i指向s&#xff0c;j指向t 如果s[i]t[j]&#xff0c;则匹配…

SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…

F-logic DataCube3 任意文件上传漏洞复现(CVE-2024-25832)

0x01 产品简介 F-logic DataCube3是一款用于光伏发电系统的紧凑型终端测量系统。 0x02 漏洞概述 F-logic DataCube3 /admin/setting_photo.php接口处存在任意文件上传漏洞 ,未经身份验证的攻击者可通过该漏洞在服务器端写入后门,获取服务器权限,进而控制整个web服务器。 …

【C++】用红黑树模拟实现set、map

目录 前言及准备&#xff1a;一、红黑树接口1.1 begin1.2 end1.3 查找1.4 插入1.5 左单旋和右单旋 二、树形迭代器&#xff08;正向&#xff09;2.1 前置 三、模拟实现set四、模拟实现map 前言及准备&#xff1a; set、map的底层结构是红黑树&#xff0c;它们的函数通过调用红…

学习笔记--强化学习(1)

参考&#xff1a;https://blog.csdn.net/koulongxin123/article/details/122676149 1.什么是强化学习&#xff1f; (1)定义 基于环境的反馈而行动&#xff0c;通过不断与环境的交互、试错&#xff0c;最终完成特定目的或者使得整体行动收益最大化&#xff08;是一种通过与环境…

使用jQuery的autocomplete实现数据查询一次,联想自动补全

书接上回&#xff0c;上次说到在jsp页面中&#xff0c;通过监听输入框的数值变化&#xff0c;实时查询数据库&#xff0c;得到返回值使用autocomplete属性自动补全&#xff0c;实现一个联想补全辅助操作&#xff0c;链接&#xff1a;使用jquery的autocomplete属性实现联想补全操…

Apache Dolphinscheduler - 无需重启 Master-Server 停止疯狂刷日志解决方案

记录的是一个 3.0 比较难搞的问题&#xff0c;相信不少使用过 3.0 的用户都遇到过 Master 服务中存在一些工作流或者任务流一直不停的死循环的问题&#xff0c;导致疯狂刷日志。不过本人到现在也没找到最关键的触发原因&#xff0c;只是看到一些连锁反应带来的结果…… 影响因素…

Linux下安装Android Studio及创建桌面快捷方式

下载 官网地址&#xff1a;https://developer.android.com/studio?hlzh-cn点击下载最新版本即可 安装 将下载完成后文件&#xff0c;进行解压&#xff0c;然后进入android-studio-2023.2.1.23-linux/android-studio/bin目录下&#xff0c;启动studio.sh即可为了更加方便的使…
最新文章