【人工智能机器学习基础篇】——深入详解深度学习之复杂网络结构:卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN)等概念及原理
深入详解深度学习之复杂网络结构:卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN)
深度学习作为人工智能的重要分支,通过复杂的网络结构实现对数据的高级抽象和理解。本文将深入探讨三种核心的复杂网络结构:卷积神经网络(Convolutional Neural Networks, CNN)、循环神经网络(Recurrent Neural Networks, RNN)和生成对抗网络(Generative Adversarial Networks, GAN),详细解读其关键概念、核心原理、示例及主要应用。
目录
- 卷积神经网络(CNN)
- 关键概念
- 核心原理
- 示例及实现
- 主要应用
- 循环神经网络(RNN)
- 关键概念
- 核心原理
- 示例及实现
- 主要应用
- 生成对抗网络(GAN)
- 关键概念
- 核心原理
- 示例及实现
- 主要应用
- 总结与展望
卷积神经网络(CNN)
关键概念
- 卷积层(Convolutional Layer):利用卷积核对输入数据进行滑动窗口操作,提取局部特征。
- 池化层(Pooling Layer):通过下采样操作减少特征图尺寸,降低计算复杂度,防止过拟合。
- 全连接层(Fully Connected Layer):将前层提取的特征进行整合,用于分类或回归任务。
- 激活函数(Activation Function):引入非线性,如ReLU、Sigmoid、Tanh等,增强模型表达能力。
- 卷积核/滤波器(Kernel/Filter):用于扫描输入数据提取特征的矩阵,权重共享机制。
- 特征图(Feature Map):卷积操作后的输出,反映数据的局部特征。
- 参数共享(Parameter Sharing):同一卷积核在不同位置共享权重,减少模型参数数量。
核心原理
卷积神经网络的设计灵感来源于生物视觉系统,通过模拟视觉皮层的结构,擅长处理具有网格结构的数据,如图像。其核心优势在于:
- 局部感受野(Local Receptive Field):卷积核只关注输入的局部区域,能够有效捕捉局部特征。
- 权重共享:同一卷积核应用于整个输入,有效减少参数数量,防止过拟合。
- 多层次特征提取:通过多层卷积和池化,逐步提取从低级到高级的特征表示。
示例及实现
以下是一个使用TensorFlow和Keras构建和训练卷积神经网络(CNN)进行CIFAR-10图像分类的示例。
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.utils import to_categorical# 加载CIFAR-10数据集
(x_train, y_train), (x_test, y_test) = cifar10.load_data()# 数据预处理
x_train = x_train.astype('float32') / 255.0 # 标准化
x_test = x_test.astype('float32') / 255.0
y_train = to_categorical(y_train, 10) # 独热编码
y_test = to_categorical(y_test, 10)# 构建CNN模型
model = Sequential([Conv2D(32, (3, 3), activation='relu', padding='same', input_shape=(32, 32, 3)),Conv2D(32, (3, 3), activation='relu', padding='same'),MaxPooling2D(pool_size=(2, 2)),Dropout(0.25),Conv2D(64, (3, 3), activation='relu', padding='same'),Conv2D(64, (3, 3), activation='relu', padding='same'),MaxPooling2D(pool_size=(2, 2)),Dropout(0.25),Flatten(),Dense(512, activation='relu'),Dropout(0.5),Dense(10, activation='softmax')
])# 编译模型
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=50, batch_size=64, validation_split=0.2, verbose=2)# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'测试准确率: {test_acc:.4f}')
代码解释:
-
数据加载与预处理:
- 使用Keras内置的CIFAR-10数据集,包含60000张32x32彩色图像,10个类别。
- 将图像像素值标准化到[0,1]区间,标签进行独热编码。
-
模型构建:
- 卷积层:使用32和64个3x3卷积核,激活函数为ReLU,
padding='same'保持输入尺寸。 - 池化层:2x2最大池化降低特征图尺寸。
- Dropout层:防止过拟合,分别设置25%和50%的神经元随机失活。
- 全连接层:512个神经元,激活函数为ReLU,最后输出层有10个神经元,激活函数为Softmax。
- 卷积层:使用32和64个3x3卷积核,激活函数为ReLU,
-
模型编译与训练:
- 使用Adam优化器和交叉熵损失函数,适用于多分类任务。
- 训练50个epoch,批量大小为64,使用20%的训练数据作为验证集。
-
模型评估:
- 在测试集上评估模型性能,输出测试准确率。
主要应用
卷积神经网络广泛应用于各类计算机视觉任务,包括但不限于:
- 图像分类:识别图像所属的类别,如ImageNet竞赛。
- 目标检测:定位图像中的物体,如YOLO、Faster R-CNN。
- 图像分割:将图像划分为不同区域,进行像素级分类,如U-Net、Mask R-CNN。
- 图像生成:生成逼真的图像,如DCGAN、StyleGAN。
- 视频分析:动作识别、视频摘要等。
循环神经网络(RNN)
关键概念
- 循环连接(Recurrent Connection):允许信息在时间步之间传递,形成记忆。
- 隐藏状态(Hidden State):存储先前时间步的信息,影响当前输出。
- 时间步(Time Step):序列数据中的每个数据点。
- 序列数据(Sequential Data):具有时间或顺序关系的数据,如文本、音频、时间序列。
- 长短期依赖(Long-term Dependencies):捕捉序列中远距离元素之间的依赖关系。
核心原理
循环神经网络通过在网络中引入循环连接,使得网络能够处理序列数据,记忆前序信息。每个时间步的输出不仅依赖于当前输入,还依赖于前一时间步的隐藏状态。标准RNN存在梯度消失和梯度爆炸的问题,难以捕捉长距离依赖。为了解决这些问题,提出了LSTM(长短期记忆网络)和GRU(门控循环单元)等变种。
示例及实现
以下是一个使用TensorFlow和Keras构建和训练LSTM模型进行IMDB电影评论情感分类的示例。
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, LSTM, Dense, Dropout
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing import sequence# 参数设置
max_features = 20000 # 词汇表大小
maxlen = 100 # 序列最大长度# 加载IMDB数据集
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)# 数据预处理,填充序列
x_train = sequence.pad_sequences(x_train, maxlen=maxlen)
x_test = sequence.pad_sequences(x_test, maxlen=maxlen)# 构建LSTM模型
model = Sequential([Embedding(max_features, 128, input_length=maxlen), # 嵌入层,将词索引转换为密集向量LSTM(128, dropout=0.2, recurrent_dropout=0.2), # LSTM层,128个隐藏单元Dense(1, activation='sigmoid') # 输出层,二分类
])# 编译模型
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=64, validation_split=0.2)# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'测试准确率: {test_acc:.4f}')
代码解释:
-
参数设置与数据加载:
max_features:选择最常见的20000个词作为词汇表。maxlen:将所有序列填充或截断到100个词。- 使用Keras内置的IMDB数据集,按词频编码词索引。
-
数据预处理:
- 使用
pad_sequences将所有序列填充到固定长度,确保输入形状一致。
- 使用
-
模型构建:
- Embedding层:将词索引转换为128维的密集向量,捕捉词语语义。
- LSTM层:具有128个隐藏单元,
dropout和recurrent_dropout用于防止过拟合。 - 输出层:使用Sigmoid激活函数进行二分类。
-
模型编译与训练:
- 使用Adam优化器和二元交叉熵损失函数。
- 训练10个epoch,批量大小为64,使用20%的训练数据作为验证集。
-
模型评估:
- 在测试集上评估模型性能,输出测试准确率。
主要应用
循环神经网络擅长处理序列数据,广泛应用于多个领域,包括:
-
自然语言处理(NLP):
- 语言模型与文本生成。
- 机器翻译。
- 情感分析。
- 命名实体识别。
-
时间序列预测:
- 股票价格预测。
- 气象预报。
- 传感器数据分析。
-
语音识别:
- 将语音信号转换为文字。
- 语音指令识别。
-
视频分析:
- 动作识别。
- 视频摘要与检索。
生成对抗网络(GAN)
关键概念
- 生成器(Generator):负责生成假样本,试图模仿真实数据分布。
- 判别器(Discriminator):负责区分真假样本,判断输入样本是否来自真实数据。
- 对抗训练(Adversarial Training):生成器和判别器通过对抗过程共同优化,互相提升。
- 潜在空间(Latent Space):生成器输入的随机噪声空间,通过映射生成样本。
- 损失函数(Loss Function):生成器和判别器的优化目标,通常采用交叉熵损失。
核心原理
生成对抗网络由生成器和判别器两个部分组成,形成一个博弈过程:
- 生成器:接收随机噪声(如高斯噪声),生成尽可能真实的样本,目的是欺骗判别器。
- 判别器:接收真实样本和生成器生成的假样本,输出样本真实性的概率,目的是准确区分真假样本。
训练过程中,生成器和判别器交替优化,生成器不断提高生成样本的真实性,判别器不断提高辨别能力。最终,生成器能生成与真实数据分布高度接近的样本。
示例及实现
以下是一个使用TensorFlow和Keras构建和训练基本GAN在MNIST数据集上生成手写数字的示例。
import tensorflow as tf
from tensorflow.keras import layers
import numpy as np
import matplotlib.pyplot as plt# 设置随机种子
tf.random.set_seed(42)
np.random.seed(42)# 加载MNIST数据集
(x_train, _), (_, _) = tf.keras.datasets.mnist.load_data()
x_train = x_train.astype('float32') / 255.0 # 标准化
x_train = np.expand_dims(x_train, axis=-1) # 增加通道维度# 定义潜在空间维度
latent_dim = 100# 构建生成器
def build_generator(latent_dim):model = Sequential([layers.Dense(7*7*256, use_bias=False, input_shape=(latent_dim,)),layers.BatchNormalization(),layers.LeakyReLU(),layers.Reshape((7, 7, 256)),layers.Conv2DTranspose(128, (5, 5), strides=(1, 1), padding='same', use_bias=False),layers.BatchNormalization(),layers.LeakyReLU(),layers.Conv2DTranspose(64, (5, 5), strides=(2, 2), padding='same', use_bias=False),layers.BatchNormalization(),layers.LeakyReLU(),layers.Conv2DTranspose(1, (5, 5), strides=(2, 2), padding='same', use_bias=False, activation='tanh')])return model# 构建判别器
def build_discriminator():model = Sequential([layers.Conv2D(64, (5, 5), strides=(2, 2), padding='same', input_shape=[28, 28, 1]),layers.LeakyReLU(),layers.Dropout(0.3),layers.Conv2D(128, (5, 5), strides=(2, 2), padding='same'),layers.LeakyReLU(),layers.Dropout(0.3),layers.Flatten(),layers.Dense(1, activation='sigmoid')])return model# 实例化生成器和判别器
generator = build_generator(latent_dim)
discriminator = build_discriminator()# 编译判别器
discriminator.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])# 构建GAN模型,将判别器设置为不可训练
discriminator.trainable = False
gan_input = tf.keras.Input(shape=(latent_dim,))
generated_image = generator(gan_input)
gan_output = discriminator(generated_image)
gan = tf.keras.Model(gan_input, gan_output)# 编译GAN
gan.compile(optimizer='adam', loss='binary_crossentropy')# 训练参数
epochs = 10000
batch_size = 128
sample_interval = 1000# 标签平滑
real = np.ones((batch_size, 1)) * 0.9
fake = np.zeros((batch_size, 1))# 训练过程
for epoch in range(1, epochs + 1):# ---------------------# 训练判别器# ---------------------# 选择真实样本idx = np.random.randint(0, x_train.shape[0], batch_size)real_images = x_train[idx]# 生成假样本noise = np.random.normal(0, 1, (batch_size, latent_dim))generated_images = generator.predict(noise)# 训练判别器d_loss_real = discriminator.train_on_batch(real_images, real)d_loss_fake = discriminator.train_on_batch(generated_images, fake)d_loss = 0.5 * np.add(d_loss_real, d_loss_fake)# ---------------------# 训练生成器# ---------------------noise = np.random.normal(0, 1, (batch_size, latent_dim))g_loss = gan.train_on_batch(noise, real)# 打印进度if epoch % 1000 == 0 or epoch == 1:print(f"Epoch {epoch} / {epochs} [D loss: {d_loss[0]:.4f}, acc.: {100*d_loss[1]:.2f}%] [G loss: {g_loss:.4f}]")# 生成并保存样本noise = np.random.normal(0, 1, (16, latent_dim))gen_images = generator.predict(noise)gen_images = 0.5 * gen_images + 0.5 # 反标准化fig, axs = plt.subplots(4, 4, figsize=(4,4))cnt = 0for i in range(4):for j in range(4):axs[i,j].imshow(gen_images[cnt, :, :, 0], cmap='gray')axs[i,j].axis('off')cnt += 1plt.show()
代码解释:
-
数据加载与预处理:
- 使用Keras内置的MNIST数据集,包含60000张28x28灰度手写数字图像。
- 将图像像素值标准化到[-1,1]区间(通过
tanh激活),并增加通道维度。
-
生成器构建:
- 从潜在空间(100维高斯噪声)开始,经过密集层、批量归一化、LeakyReLU激活、转置卷积层,生成28x28x1的图像。
-
判别器构建:
- 接收28x28x1的图像,经过卷积层、LeakyReLU激活、Dropout层、全连接层,输出样本真实性的概率。
-
GAN模型构建与编译:
- 将生成器和判别器结合,构建对抗模型。
- 判别器在GAN模型中设为不可训练,通过训练生成器优化其参数。
-
训练过程:
- 每个epoch先训练判别器,使用真实样本和生成出的假样本。
- 然后训练生成器,通过对抗训练提高生成样本的真实性。
- 定期生成并展示样本图像,观察生成效果。
主要应用
生成对抗网络具有强大的生成能力,广泛应用于多个领域,包括但不限于:
- 图像生成:生成高质量、逼真的图像,如人脸生成(StyleGAN)。
- 图像修复与超分辨率:填补图像缺失部分,提高图像分辨率。
- 艺术风格转换:将一种艺术风格应用到另一幅图像上,如风格迁移(CycleGAN)。
- 数据增强:为模型提供更多训练样本,改善模型泛化能力。
- 文本生成:生成自然语言文本,如对话系统中的回复。
- 语音合成:生成逼真的语音音频,应用于语音助手等。
总结与展望
卷积神经网络(CNN)、循环神经网络(RNN)和生成对抗网络(GAN)作为深度学习中三种核心的复杂网络结构,分别在计算机视觉、自然语言处理和生成模型等领域展现出卓越的性能和广泛的应用前景。
- **卷积神经网络(CNN)**擅长处理图像数据,通过层叠的卷积和池化操作实现多层次特征提取,广泛应用于图像分类、目标检测等任务。
- **循环神经网络(RNN)**专注于处理序列数据,通过循环连接和隐藏状态实现时间依赖建模,适用于自然语言处理、时间序列预测等领域。
- **生成对抗网络(GAN)**通过生成器和判别器的对抗训练,能够生成高度逼真的数据样本,应用于图像生成、数据增强等多个方向。
随着研究的深入,这些网络结构不断演化,衍生出更为复杂和高效的变种,如ResNet、Transformer、CycleGAN等,进一步推动了人工智能技术的发展。未来,结合多种网络结构和新兴技术,深度学习将在更多复杂和多样化的任务中发挥重要作用。
参考资料
- 《深度学习》(Ian Goodfellow, Yoshua Bengio, Aaron Courville 著)
- 《神经网络与深度学习》(Michael Nielsen 著)
- TensorFlow官方网站:https://www.tensorflow.org/
- Keras官方网站:https://keras.io/
- PyTorch官方网站:https://pytorch.org/
- GAN论文:“Generative Adversarial Networks” by Ian Goodfellow et al., 2014.
本文旨在全面介绍卷积神经网络(CNN)、循环神经网络(RNN)和生成对抗网络(GAN)的关键概念、核心原理、示例及主要应用,帮助读者深入理解深度学习的复杂网络结构和其在实际中的应用。希望对您的学习和研究有所帮助。
相关文章:
【人工智能机器学习基础篇】——深入详解深度学习之复杂网络结构:卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN)等概念及原理
深入详解深度学习之复杂网络结构:卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN) 深度学习作为人工智能的重要分支,通过复杂的网络结构实现对数据的高级抽象和理解。本文…...
MySQL 入门教程
MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。 在本教程中,会让大家快速掌握MySQL的基本知识,并轻松使用MySQL数据库。 什么…...
【sql】CAST(GROUP_CONCAT())实现一对多对象json输出
数据库:mysql 5.7版本以上 问题:一对多数据,实现输出一条数据,并将多条数据转换成json对象输出,可以实现一对多个字段。 项目中关系较为复杂,以下简化数据关系如下: t1是数据表,t…...
QT:控件属性及常用控件(1)------核心控件及属性
一个图形化界面上的内容,不需要我们直接从零去实现 QT中已经提供了很多的内置控件: 按钮,文本框,单选按钮,复选按钮,下拉框等等。。。。。 文章目录 1.常用控件属性1.1 enabled1.2 geometry1.2.1 geometry…...
使用 Python结合ffmpeg 实现单线程和多线程推流
一、引言 在本文中,我们将详细介绍如何使用 Python 进行视频的推流操作。我们将通过两个不同的实现方式,即单线程推流和多线程推流,来展示如何利用 cv2(OpenCV)和 subprocess 等库将视频帧推送到指定的 RTMP 地址。这…...
Linux一些问题
修改YUM源 Centos7将yum源更换为国内源保姆级教程_centos使用中科大源-CSDN博客 直接安装包,走链接也行 Index of /7.9.2009/os/x86_64/Packages 直接复制里面的安装包链接,在命令行直接 yum install https://vault.centos.org/7.9.2009/os/x86_64/Pa…...
在 Ubuntu 24.04.1 LTS | Python 3.12 环境下部署 Crypto 库
测试一些密码学方案需要用到 Crypto 库,网上教程大多针对 Windows 和 Python 3.10 或以下的环境,所以写下了这篇博文。 部署与使用 首先执行 su 输入密码进入超级用户,部署完 Python 3.12 环境后,执行以下命令进行安装ÿ…...
HTML5实现好看的二十四节气网页源码
HTML5实现好看的新年春节元旦网站源码 前言一、设计来源1.1 主界面1.2 关于我们界面1.3 春季节气界面1.4 夏季节气界面1.5 秋季节气界面1.6 冬季节气界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的二十四节气网页源码,春季节气…...
C++(9)—类和对象(上) ②实例化
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、实例化概念二、对象大小 1.对象存储2.内存对齐规则总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、实例化概念 • …...
Effective C++读书笔记——item2(const,enum,inlines取代#define)
关于用常量取代 #define 的总体原则 在编程中,应尽量减少预处理器(特别是 #define)的使用,可通过合适的替代方式来避免 #define 带来的诸多问题,虽然不能完全消除预处理器相关指令(如 #include、#ifdef/#i…...
如何科学评估与选择新版本 Python 编程语言和工具
文章目录 摘要引言评估新版本的关键因素适用性评估成本与收益分析 新版本功能的实际应用示例代码模块详细解析示例代码模块代码模块解析实际应用场景如何运行与配图 QA环节总结参考资料 摘要 随着技术的快速发展,编程语言和软件工具不断推出新版本,带来…...
第十届“挑战杯”大学生课外学术科技作品竞赛解析及资料
“挑战杯”被誉为大学生科技创新创业的“奥林匹克”盛会,它汇聚了来自各个学科、各个年级的精英人才。在这里,同学们带着对未知的好奇和对知识的渴望,组成一个个团队,向难题发起挑战。现在,第十届“挑战杯”大学生课外…...
【门铃工作原理】2021-12-25
缘由关于#门铃工作原理#的问题,如何解决?-嵌入式-CSDN问答 4 RST(复位)当此引脚接高电平时定时器工作,当此引脚接地时芯片复位,输出低电平。 按钮按下给电容器充电并相当与短路了R1改变了频率,按…...
Chain of Agents(COA):大型语言模型在长文本任务中的协作新范式
随着人工智能技术的飞速发展,大型语言模型(LLM)在自然语言处理领域的应用日益广泛。然而,LLM在处理长文本任务时仍面临诸多挑战。传统的解决方案,如截断输入上下文或使用基于检索增强生成(RAG)的…...
业务模型与UI设计
业务数据模型的设计、UI设计这应该是程序设计中不可缺少的部分。做程序设计的前提应该先把这两块设计好,那么,来一个实际案例,看看这2块的内容。 汽车保养记录业务模型与UI设计: 一、【车辆清单】 记录车辆相关的数据࿰…...
Apache SeaTunnel深度优化:CSV字段分割能力的增强
Apache SeaTunnel深度优化:CSV字段分割能力的增强 一、Apache SeaTunnel与CSV处理 1.1 Apache SeaTunnel简介 Apache SeaTunnel(原名Waterdrop)是一个分布式、高性能的数据集成平台,支持海量数据的实时同步。它允许用户通过配置…...
免费下载 | 2024年具身大模型关键技术与应用报告
这份报告的核心内容涉及具身智能的关键技术与应用,主要包括以下几个方面: 具身智能的定义与重要性: 具身智能是基于物理身体进行感知和行动的智能系统,通过与环境的交互获取信息、理解问题、做出决策并实现行动,产生智…...
SSM-Spring-AOP
目录 1 AOP实现步骤(以前打印当前系统的时间为例) 2 AOP工作流程 3 AOP核心概念 4 AOP配置管理 4-1 AOP切入点表达式 4-1-1 语法格式 4-1-2 通配符 4-2 AOP通知类型 五种通知类型 AOP通知获取数据 获取参数 获取返回值 获取异常 总结 5 …...
jenkins修改端口以及开机自启
修改Jenkins端口 方式一:通过配置文件修改(以CentOS为例) 找到配置文件:在CentOS系统中,通常可以在/etc/sysconfig/jenkins文件中修改Jenkins的配置。如果没有这个文件,也可以查看/etc/default/jenkins&…...
按照人们阅读Excel习惯来格式化BigDecimal
1、环境/问题描述 使用springboot发送邮件(附件)的方式将月度报表发送给领导查阅,数据是准确的,领导基本满意。 就是对一些数字的格式化提出了改进建议,比如不要让大数字自动转为科学计数法、浮点数小数点后都是0就不要带出来,根…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
