当前位置: 首页 > news >正文

局域网的网站建设/互联网行业最新资讯

局域网的网站建设,互联网行业最新资讯,室内设计联盟课堂,郑州网站建设msgg一 、卷积神经网络是什么 (1)印象 今天说的CNN,并不是我们熟知的美国有线电视新闻网。 那什么是CNN呢? Convolutional Neural Networks, CNN)简单来说,就是用一个筛子来筛面粉的。 筛子就是卷积核&…

一 、卷积神经网络是什么

(1)印象

今天说的CNN,并不是我们熟知的美国有线电视新闻网。

那什么是CNN呢? Convolutional Neural Networks, CNN)简单来说,就是用一个筛子来筛面粉的。

筛子就是卷积核,面粉就是被筛的信息,晒出来的面粉就是新生成或者说被抽离的特征。

有很多把筛子组成的网络一起来筛信息,就组成了一个卷积神经网络。

(2)概念:

卷积神经网络(CNN)是一种模仿人类视觉系统的算法,常用于图像和视频处理。它的基本思想是通过多个“卷积层”逐步提取图像的特征。例如,在处理一张照片时,网络首先识别图像的基本边缘或颜色,再逐渐发现更复杂的结构,如物体的形状、特征。CNN 的优势在于它能自动学习图像中的重要信息,而不需要手动提取特征,最终帮助模型做出准确的预测,比如识别猫狗图片。

(3)过程

想象你正在拿一张照片,想要识别照片中的物体,比如一只猫。你没有直接看整张照片,而是通过放大镜来查看图片中的小部分。这个放大镜就像是CNN中的卷积核(filter),它会对图片的每个小区域进行扫描,提取局部特征(比如边缘、颜色变化等)。每次扫描后,放大镜会帮助你得出一个小结论,比如“这里有一条边缘”,然后你将这些小结论组合起来,逐渐构建出对整个物体的认知。

  1. 第一步:局部扫描(卷积层) 想象你用一个小的放大镜(卷积核)在图片上逐个小块地扫描。每扫描一个小块,你就得出一个关于这个小区域的特征。比如,你发现图片某一部分有条清晰的边缘,或者有个圆形的区域。

  2. 第二步:信息汇总(池化层) 扫描过程中,可能会有一些冗余的细节,池化层就像是用一个筛网,筛掉一些不必要的细节,只保留最重要的信息。就好像你在拿到放大镜的结论后,挑选出最显著的特征,而忽略一些不重要的东西。

  3. 第三步:组合特征(全连接层) 当你逐渐识别了更多的细节,比如这边是圆形,那边是有条边缘,最终你把这些局部特征组合起来,形成对整个物体的整体理解。比如,结合猫的耳朵、尾巴、眼睛的特征,你能识别出这是一只猫。

  4. 最后:做出判断(输出层) 在完成了特征提取和组合后,你最终就能做出一个判断:这张照片上的物体是“猫”,还是“狗”,或者是其他什么。

二 、卷积的实现

(1)卷积的比喻:图像处理中的“滑动窗口”

想象一下你手中有一个大图,里面充满了各种颜色和细节,而你只对其中一小部分感兴趣。为了提取这部分的信息,你用一个小窗户(称为卷积核或滤波器)在大图上逐步滑动,每次只看到这个窗户覆盖的区域。然后,你用这个窗户内的信息来计算一个数值,通常是对区域的某种数学运算(如加权求和)。最终,当窗户滑过整个图像时,你会得到一个新的图,这个新图的每个点代表了原始图像某部分的信息。

(2)数学上如何理解卷积?

卷积是一种数学运算,用来结合两个函数(或数组)以产生第三个函数。在图像处理中,卷积通常是用一个小的滤波器(卷积核)对整个图像进行滑动(遍历)。每当卷积核滑动到图像的一个小区域时,它会对这个区域和卷积核内的数值进行运算(通常是逐元素相乘后求和),然后得出一个结果。

具体步骤如下:

  1. 输入图像:假设图像是一个矩阵,像素值为每个元素。
  2. 卷积核:卷积核(filter)也是一个矩阵,比如一个3x3的矩阵。
  3. 滑动过程:卷积核在输入图像上滑动,覆盖一个区域。
  4. 计算输出:每次卷积核覆盖一个区域时,对区域内的每个像素和卷积核的对应元素进行乘法运算,然后将结果相加得到一个单一的输出值。这个输出值作为新图像中的一个像素点。

(3)卷积的例子

 假设我们有一个简单的3x3的输入图像(数字表示像素强度),以及一个3x3的卷积核(滤波器)

我们把卷积核放在图像的左上角,进行卷积运算:

这个结果“-6”就是卷积运算的输出,代表了图像某个区域的特征。接下来,卷积核会在图像上滑动,继续执行相同的计算,直到覆盖整个图像。

(4)卷积的目的:

  • 特征提取:卷积的核心目的是提取图像中的特征,比如边缘、角点、纹理等。不同的卷积核会检测不同类型的特征。
  • 局部信息捕获:卷积帮助网络关注图像中局部的细节,而不是整个图像。这使得CNN可以自动学习到图像中的重要信息,无需人工设计特征。

(5)代码实现

上面我们看到的 卷积的例子,完全可以通过代码来实现。我们用Pyton来实现这个过程:

我们可以使用 Python 来实现一个简单的 3x3 卷积操作。我们将使用 NumPy 来处理矩阵(图像)和卷积核的运算。

下面是一个简单的 Python 示例,展示了如何对一个 3x3 的图像和 3x3 的卷积核进行卷积操作:

import numpy as np# 定义输入图像(3x3矩阵)
image = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]
])# 定义卷积核(3x3矩阵)
kernel = np.array([[1, 0, -1],[1, 0, -1],[1, 0, -1]
])# 卷积操作
def convolution2d(image, kernel):# 获取输入图像和卷积核的大小image_height, image_width = image.shapekernel_height, kernel_width = kernel.shape# 计算输出图像的大小output_height = image_height - kernel_height + 1output_width = image_width - kernel_width + 1# 创建一个输出图像,初始化为全0output = np.zeros((output_height, output_width))# 对图像进行卷积操作for i in range(output_height):for j in range(output_width):# 提取图像中的当前3x3区域region = image[i:i+kernel_height, j:j+kernel_width]# 对应区域和卷积核的逐元素相乘并求和output[i, j] = np.sum(region * kernel)return output# 进行卷积操作并输出结果
output_image = convolution2d(image, kernel)
print("输出图像:")
print(output_image)

代码说明:

  1. 输入图像和卷积核

    • 输入图像是一个 3x3 的矩阵。(我们可以理解为像素矩阵)
    • 卷积核是一个 3x3 的矩阵,模拟了一个边缘检测的滤波器。
  2. 卷积操作

    • convolution2d 函数实现了卷积操作。
    • 函数首先获取输入图像和卷积核的大小,然后计算输出图像的大小。
    • 使用嵌套的 for 循环遍历每个位置,提取图像中的当前 3x3 区域,与卷积核逐元素相乘并求和,最终得到卷积结果。
  3. 输出

    • output_image 是卷积后的输出图像。

运行结果:

假设输入图像和卷积核如下所示:

输入图像

1 2 3
4 5 6
7 8 9

卷积核

1  0  -1
1  0  -1
1  0  -1

输出图像(经过卷积操作后)将是:

-6.0

这是由于卷积核与输入图像的 3x3 区域的计算结果。

这个代码演示了如何用 Python 和 NumPy 实现一个简单的卷积操作,模拟了图像处理中的卷积过程。在更复杂的图像处理中,卷积核通常会根据任务进行不同的设计,如边缘检测、模糊、锐化等。

实际上,卷积神经网络 就是由很多个这样的卷积核组成,通过各种复杂的计算方式,形成了一个能自我学习的神经网络。

三、卷积的应用

卷积神经网络(CNN)在现实中的应用非常广泛,特别是在涉及图像、视频和一些其他类型的二维数据处理的领域。CNN 的强大之处在于它能够自动学习到输入数据中的特征,而无需人工设计特征,因此被广泛应用于各种任务。以下是一些 CNN 在现实中的应用场景:

1. 图像分类

CNN 最初的主要应用之一就是 图像分类,即将图像分为不同的类别。CNN 可以自动识别图像中的不同特征(如边缘、纹理、颜色等),并根据这些特征判断图像属于哪个类别。

  • 应用实例
    • 面部识别:通过 CNN 进行人脸识别,用于安全系统、手机解锁等。
    • 物体分类:识别图片中的物体,例如从图像中自动识别出猫、狗、车、飞机等。
    • 手写数字识别:例如,MNIST 数据集中的手写数字识别,广泛应用于银行支票的自动化处理。

2. 目标检测

目标检测不仅要识别图像中的物体类别,还需要准确地 定位 这些物体的位置(即给出一个矩形框)。CNN 在这类任务中非常有效,因为它可以同时提取图像特征并确定物体的边界。

  • 应用实例
    • 自动驾驶:检测和识别道路上的行人、其他车辆、交通标志等。
    • 监控系统:通过视频监控识别和跟踪物体,如人脸、车辆、入侵者等。
    • 医学影像分析:通过对医学影像(如CT、MRI)进行目标检测,自动定位肿瘤、病变区域等。

3. 图像分割

图像分割是指将图像划分成多个区域,每个区域表示图像中的某个特定物体或背景。CNN 在图像分割任务中也有很大的优势,尤其是在 语义分割实例分割 中。

  • 应用实例
    • 医学图像处理:在 CT、MRI 或 X 光片中,自动分割器官、肿瘤、病变区域,帮助医生更准确地诊断。
    • 遥感图像分析:对卫星图像进行地物分类或提取土地覆盖类型。
    • 自动驾驶:通过图像分割技术识别路面、车辆、行人等,使得自动驾驶系统能够理解周围环境。

4. 视频分析

CNN 也被应用于视频中的帧级分析,帮助进行对象跟踪、动作识别、场景分析等任务。通过对连续帧的卷积处理,CNN 可以识别视频中的事件、行为或情境。

  • 应用实例
    • 监控和安全:通过对视频流的实时分析,检测异常行为(如入侵、打架、失踪等)。
    • 运动分析:在体育赛事中,CNN 可以帮助识别运动员的动作,或者自动分析比赛的内容。
    • 情感分析:通过分析视频中的面部表情和肢体语言,自动识别情感状态。

5. 风格迁移与生成对抗网络(GAN)

CNN 也被广泛应用于图像生成和风格迁移任务,特别是结合生成对抗网络(GAN)进行图像创作、艺术风格转换等。

  • 应用实例
    • 艺术风格迁移:将一张普通的照片转化为类似著名艺术家画风的图片(如把照片转为梵高的画风)。
    • 图像生成:GAN 和 CNN 结合生成新的、逼真的图片,如人脸生成、风景生成等。
    • 超分辨率:利用 CNN 将低分辨率图像转化为高分辨率图像。

6. 语音识别

CNN 也在语音处理领域取得了显著进展,尤其是在 声学模型语音到文本的转换 中。语音信号通常会被转化为时间-频率图(类似于图像),CNN 可以在这些图上提取有效的特征。

  • 应用实例
    • 语音助手:例如 Siri、Alexa、Google Assistant 等,通过 CNN 进行语音识别并转换为文本。
    • 自动字幕生成:将语音内容自动转为字幕或文本。
    • 语音情感识别:识别语音中的情感,如愤怒、开心、悲伤等。

7. 推荐系统

虽然 CNN 在推荐系统中的应用没有像在图像处理领域那样常见,但它在一些特殊场景下也有应用,尤其是在处理带有空间和结构信息的推荐任务时。

  • 应用实例
    • 图像推荐:通过用户历史浏览的图像内容,使用 CNN 对图像进行分析,并推荐相关的视觉内容(如电商网站的商品推荐)。
    • 视频内容推荐:在视频平台(如 YouTube)中,通过对视频封面和内容的分析,推荐与用户兴趣相关的内容。

8. 智能医疗

CNN 在医学影像领域的应用逐渐增多,帮助医生在 X 光片、CT、MRI 等医疗影像中发现病变区域,进行早期诊断。

  • 应用实例
    • 肿瘤检测:自动化地在 CT 或 X 光影像中识别出肿瘤或其他病变。
    • 眼科检测:通过眼底图像自动检测眼病(如糖尿病视网膜病变等)。
    • 皮肤病检测:分析皮肤图像,帮助诊断皮肤病或癌症。

卷积神经网络(CNN)已经广泛应用于许多领域,尤其是在图像和视频处理、语音识别、医学诊断等方面。它们通过自动化地学习数据中的特征,极大地提高了很多任务的效率和准确性。随着深度学习技术的不断进步,CNN 的应用场景仍在持续扩展,涉及更多领域和更复杂的任务。

 

四、一个简单的图像分类卷积实现

看到这里你一定基本理解了什么是卷积和它的工作模式。接下来我们就来实际地AI一把,来实现一个最简单地通过卷积来进行图片分类(数字识别)的应用。

下面的案例将用卷积来识别一个手写数字,这个在我们之前也学过例程,那时候用的不是卷积。

(1)TensorFlow

讲到AI应用开发们一定离不开:TensorFlow,这 是一个开源的机器学习和深度学习框架,由 Google Brain 团队开发。它提供了一个灵活的、广泛使用的计算图系统,用于实现各种机器学习和人工智能(AI)模型。TensorFlow 支持分布式计算,可以在多个 CPU 或 GPU 上运行,适用于不同平台(如服务器、桌面、移动设备等)。它主要用于深度学习模型的训练与推理,但也支持传统的机器学习算法。

主要特点:

  • 计算图:TensorFlow 使用计算图(Graph)来表示数学计算,节点表示操作,边表示数据流。
  • 自动微分:自动计算梯度,支持反向传播算法,便于训练神经网络。
  • 跨平台:支持在多个平台(CPU、GPU、移动设备等)上部署和运行。
  • 灵活性:可以自定义操作和模型,适合研究人员和开发者。

(2)Keras

这是我们这次实例的关键。

Keras是一个高层次的深度学习 API,用于构建和训练神经网络模型,它是 TensorFlow 的一部分。在 Keras 中,卷积操作主要通过卷积层(Conv2D)来实现,这对于构建卷积神经网络(CNN)是至关重要的。卷积操作是 CNN 的核心,用于自动提取输入图像中的特征。

在 Keras 中,卷积操作通常通过以下层实现:

- Conv2D 层(二维卷积层)

Conv2D 是 Keras 中用于处理图像数据的卷积层,适用于二维输入(如图像)。它通过卷积操作来提取图像中的特征。

示例代码:(我们在本次例子中就是用到了这个训练方式)

from tensorflow.keras import layersmodel = models.Sequential([layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))
])
  • 32:卷积核的数量(即输出通道数),这决定了卷积层的输出维度。
  • (3, 3):卷积核的大小(即滤波器的尺寸)。通常是一个小的 2D 窗口(例如 3x3 或 5x5)。
  • activation='relu':卷积后的激活函数,ReLU 是最常用的激活函数之一。
  • input_shape=(28, 28, 1):输入图像的尺寸,这里假设是 28x28 像素的灰度图像。

 (3) 模块介绍

下面是代码的模块化解释:

3-1. 禁用 GPU 以排查潜在问题

(因为我的机器上GPU 有些问题,所以暂时禁用)

os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
  • 这行代码禁用了 GPU。os.environ["CUDA_VISIBLE_DEVICES"] = "-1" 让 TensorFlow 在运行时只使用 CPU,而不是 GPU。这可以帮助排查与 GPU 相关的问题,或者在没有 GPU 的环境中运行代码。

3-2. 加载并预处理数据 (MNIST 数据集)

MNIST 数据集包含 28x28 像素的灰度图像,每张图像表示一个手写的数字(0 到 9)。数据集总共包括 70,000 张图像,其中有 60,000 张用于训练,10,000 张用于测试。

(x_train, y_train), (x_test, y_test) = mnist.load_data()# 数据预处理
x_train = x_train[..., tf.newaxis] / 255.0  # 增加通道维度并归一化
x_test = x_test[..., tf.newaxis] / 255.0print("x_train shape:", x_train.shape)
print("x_test shape:", x_test.shape)
  • mnist.load_data():加载 MNIST 手写数字数据集,返回训练集和测试集,分别包括图像和标签。
  • x_train[..., tf.newaxis] / 255.0:将训练图像数据归一化到 [0, 1] 区间,并通过 tf.newaxis 增加一个新的通道维度,将原本形状为 (28, 28) 的数据转换为 (28, 28, 1)
  • 同样地,对测试数据 x_test 进行相同的处理。
  • print 输出了训练集和测试集数据的形状,以确保数据预处理完成。

3-3. 定义卷积神经网络 (CNN) 模型

这里的参数是可调的,参数不一样,结果会不一样,这个需要深入了解它的特性再调增参数。

model = models.Sequential([layers.Conv2D(8, (3, 3), activation='relu', input_shape=(28, 28, 1)),layers.MaxPooling2D((2, 2)),layers.Conv2D(16, (3, 3), activation='relu'),layers.MaxPooling2D((2, 2)),layers.Flatten(),layers.Dense(32, activation='relu'),layers.Dense(10, activation='softmax')
])
  • 使用 Sequential 构建一个顺序的神经网络模型。
  • Conv2D:卷积层,用于从输入图像中提取特征。第一层有 8 个 3x3 的滤波器,使用 ReLU 激活函数。
  • MaxPooling2D:池化层,用于对特征图进行下采样,减少参数量和计算量。
  • 第二层卷积层有 16 个 3x3 的滤波器。
  • Flatten:将多维输入展平为一维,用于全连接层的输入。
  • Dense:全连接层,最后一层有 10 个神经元,输出 10 个数字类别,激活函数为 Softmax,用于多分类任务。

3-4. 编译模型

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy',metrics=['accuracy'])
  • optimizer='adam':使用 Adam 优化器进行训练,它是常用的自适应学习率优化器。
  • loss='sparse_categorical_crossentropy':使用稀疏类别交叉熵作为损失函数,适用于整数标签的多分类问题。
  • metrics=['accuracy']:监控准确度作为训练的评估指标。

3-5. 训练模型

model.fit(x_train, y_train, epochs=3, validation_data=(x_test, y_test))
  • 使用训练数据 (x_train, y_train) 来训练模型。
  • 训练周期设置为 3 次(epochs=3)。
  • validation_data:在每个周期结束时,使用测试数据 (x_test, y_test) 评估模型的表现。

3-6. 导入本地图片并进行预处理

def load_image(image_path):img = Image.open(image_path).convert('L')img = img.resize((28, 28))img_array = np.array(img) / 255.0img_array = img_array[..., tf.newaxis]img_array = np.expand_dims(img_array, axis=0)return img_array
  • 这是一个辅助函数,用于加载并预处理本地图片。
  • Image.open(image_path).convert('L'):使用 PIL 打开图片并转换为灰度图(L 表示亮度)。
  • img.resize((28, 28)):将图片调整为 28x28 的大小,与 MNIST 数据集中的图像尺寸一致。
  • np.array(img) / 255.0:将图片转换为 NumPy 数组,并归一化像素值到 [0, 1]。
  • img_array[..., tf.newaxis]:增加通道维度,使图像形状为 (28, 28, 1)
  • np.expand_dims(img_array, axis=0):增加批次维度,使图像形状为 (1, 28, 28, 1),以符合模型输入的形状要求。

3-7. 使用本地图像进行预测

image_path = 'path_to_your_handwritten_image.png'
sample_image = load_image(image_path)
predicted_class = model.predict(sample_image)
predicted_class = tf.argmax(predicted_class, axis=1)
  • image_path:指定本地图像的路径。
  • 调用 load_image 函数加载并预处理图像。
  • model.predict(sample_image):使用训练好的模型对预处理后的图像进行预测。
  • tf.argmax(predicted_class, axis=1):获取预测结果中最大值的索引,表示预测的数字类别。

3-8. 打印预测结果

print(f"Predicted Class: {predicted_class.numpy()[0]}")
  • 打印模型的预测结果。predicted_class.numpy()[0] 获取预测结果的数字类标签(numpy() 是为了从 TensorFlow 张量转换为 NumPy 数组)。

劈里啪啦一通计算后,给出了结果:

实际上我输入的图片上的数字是:

看起来没有识别正确,(少了半边 哈哈哈)这可能和模型的参数设定有关。有时间再慢慢调吧。

今天的卷积就聊到这里啦,硬件支持的话,可以玩出更多的花样呢!

相关文章:

AI开发:卷积神经网络CNN原理初识,简易例程 - 机器学习

一 、卷积神经网络是什么 (1)印象 今天说的CNN,并不是我们熟知的美国有线电视新闻网。 那什么是CNN呢? Convolutional Neural Networks, CNN)简单来说,就是用一个筛子来筛面粉的。 筛子就是卷积核&…...

详细介绍vue的递归组件(重要)

递归组件在 Vue 中是一个非常强大的概念,尤其在渲染层级结构(如树形结构、嵌套列表、评论系统等)时,能够极大地简化代码。 什么是递归组件? 递归组件就是一个组件在其模板中引用自身。这种做法通常用于渲染树形结构或…...

【单片机基础知识】基础知识(CortexM系列、STM32系统框架、存储器映射、寄存器映射)

1. CortexM系列介绍 ARM官方资料: 📎Arm Cortex-M4 Processor Datasheet.pdf📎Arm-Cortex-M7-Processor-Datasheet.pdf📎Arm Cortex-M Comparison Table_v3.pdf📎Arm Cortex-M3 Processor Datasheet.pdf 课程资料&a…...

yolov5导出命令

python export.py --weights yolov5s.pt --img-size 640 --batch-size 1 --device cpu --include onnx 关闭动态输入,cpu导出 检测onnx模型能否加载成功指令: python detect.py --weights yolov5s.onnx --dnn 终端调用detect.py检测图片命令&…...

RabbitMQ的常用术语介绍

出版商 “出版商”一词在不同的上下文中有不同的含义。一般来说,在消息传递中 发布者(也称为“生成者”)是应用程序(或应用程序实例) 发布 (生成) 消息。同一应用程序也可以使用消息 因此同时也…...

Docker魔法:用docker run -p轻松开通容器服务大门

前言 “容器”与“虚拟化”作为现代软件开发和运维中的关键概念,已经广泛应用于各个技术领域。然而,在使用 Docker 部署应用时,常常会遇到这样的问题:容器正常运行,却无法让外界访问其内部服务?即使容器内的应用顺利启动,外部无法通过浏览器或 API 进行连接。此时,doc…...

【后端面试总结】Redis过期删除策略

Redis会将每个设置了过期时间的key放入一个独立的字典中,以后会定时遍历这个字典来删除到期的key。除了定时遍历之外,它还会使用惰性策略来删除过期的key。所谓惰性策略就是在客户端访问这个key的时候,Redis对key的过期时间进行检查&#xff…...

数字图像处理(15):图像平移

(1)图像平移的基本原理:计算每个像素点的移动向量,并将这些像素按照指定的方向和距离进行移动。 (2)平移向量包括水平和垂直分量,可以表示为(dx,dy)&#xff…...

高级java每日一道面试题-2024年12月08日-JVM篇-什么是类加载器?

如果有遗漏,评论区告诉我进行补充 面试官: 什么是类加载器? 我回答: 在Java高级面试中,类加载器(ClassLoader)是一个重要的概念,它涉及到Java类的加载和初始化机制。以下是对类加载器的详细解释: 定义与作用 类加…...

JAVA子类的无参构造器中第一行的super

在 Java 中,子类的构造器是否需要显式调用 super 取决于父类(超类)的构造器。 如果父类有一个无参构造器: 如果父类有一个无参构造器,那么子类的构造器可以不显式调用 super。在这种情况下,如果子类构造器的…...

mysql程序介绍,选项介绍(常用选项,指定选项的方式,特性),命令介绍(查看,部分命令),从sql文件执行sql语句的两种方法

目录 mysql程序 介绍 选项 介绍 常用选项 指定选项的方式 ​编辑配置文件 环境变量 选项特性 指定选项 选项名 选项值 命令 介绍 查看客户端命令 tee/notee prompt source system help contents 从.sql文件执行sql语句 介绍 方式 source 从外部直接导入…...

Unity教程(十九)战斗系统 受击反馈

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…...

lanqiaoOJ 3744:小蓝的智慧拼图购物 ← pair+优先队列

【题目来源】https://www.lanqiao.cn/problems/3744/learning/【题目描述】 在小蓝的生日那天,他得到了一个由神秘人赠送的拼图游戏,每个拼图都有其特定的价值和相应的优惠券。小蓝决定要买下所有的拼图,但他希望能尽可能地节省花费。小蓝手中…...

Spring Boot教程之二十一:文件处理

Spring Boot – 文件处理 Spring Boot 是一种流行的、基于 Spring 的开源框架,用于开发强大的 Web 应用程序和微服务。由于它建立在 Spring 框架之上,因此它不仅具有 Spring 的所有功能,而且还包括某些特殊功能,例如自动配置、健康…...

【Linux】Linux的基本常识+指令

目录 1. 整体学习思维导图 2. 常见快捷键操作 3. 基本指令 pwd指令 whoami指令 ls 指令 touch指令 cd 指令 Stat 指令 mkdir 指令 alias指令 nano 指令 rmdir 和 rm 指令 man 指令手册 cp 命令 cat/echo/tac 指令 mv 指令 less 指令 head/tail 指令 date…...

Rocky Linux 9.3系统搭建Slurm环境【笔记】

实践环境:Rocky Linux 9.3 [root@m1 ~]# cat /etc/redhat-release Rocky Linux release 9.3 (Blue Onyx) [root@m1 ~]# uname -r 5.14.0-362.8.1.el9_3.x86_64 [root@m1 ~]#主机名和IP ● 控制节点m1:10.1.1.10 ● 计算节点c1:10.1.1.11 ● 计算节点c2:10.1.1.12 一、…...

原生微信小程序使用原子化tailwindcss

这里使用了第三方库来实现:https://weapp-tw.icebreaker.top/ 官方配置步骤一: https://weapp-tw.icebreaker.top/docs/quick-start/native/install 官方配置步骤二:https://weapp-tw.icebreaker.top/docs/quick-start/native/install-plugin 我下面的操作步骤跟官方步骤…...

《掌握Nmap:全面解析网络扫描与安全检测的终极指南》

 nmap # 简介(帮助) 用法:nmap [扫描类型] [选项] {目标指定内容} 简介(帮助) 用法:nmap [扫描类型] [选项] {目标指定内容} 一、目标指定: 可以传入主机名、IP 地址、网络等。 例如&a…...

k8s-Informer概要解析(2)

Client-go 主要用在 k8s 控制器中 什么是 k8s Informer Informer 负责与 kubernetes APIServer 进行 Watch 操作,Watch 的资源,可以是 kubernetes 内置资源对象,也可以 CRD。 Informer 是一个带有本地缓存以及索引机制的核心工具包&#x…...

UE5基本数据类型

bool: 表示布尔值,只有两个取值:true 或 false,用于表示逻辑条件。int8: 表示 8 位的有符号整数,范围是 −128−128 到 127127。uint8: 表示 8 位的无符号整数,范围是 00 到 255255。int16: 表示 16 位的有符号整数&am…...

Next.js 系统性教学:中间件与国际化功能深入剖析

更多有关Next.js教程,请查阅: 【目录】Next.js 独立开发系列教程-CSDN博客 目录 一、Next.js 中间件 (Middleware) 功能解析 1.1 什么是中间件? 1.2 Next.js 中间件的工作机制 1.3 中间件的功能应用 身份验证与授权 请求重定向 修改请…...

鸿蒙HarmonyOS元服务应用开发实战完全指导

内容提要 元服务概述 元服务开发流程 第一个元服务开发 元服务部署与运行 一、服务概述 1、什么是元服务 在万物互联时代,人均持有设备量不断攀升,设备种类和使用场景更加多样,使得应用开发、应用入口变得更加复杂。在此背景下&#x…...

CT中的2D、MPR、VR渲染、高级临床功能

CT中的2D、MPR、VR渲染 在CT(计算机断层扫描)中,2D、MPR(多平面重建)、VR(体积渲染)是不同的图像显示和处理技术,它们各自有独特的用途和优势。下面分别介绍这三种技术:…...

利用docker-compose来搭建flink集群

1.前期准备 (1)把docker,docker-compose,kafka集群安装配置好 参考文章: 利用docker搭建kafka集群并且进行相应的实践-CSDN博客 这篇文章里面有另外两篇文章的链接,点进去就能够看到 (2&…...

力扣打卡10:K个一组翻转链表

链接:25. K 个一组翻转链表 - 力扣(LeetCode) 这道题需要在链表上,每k个为一组,翻转,链接。 乍一看好像比较容易,其实有很多细节。比如每一组反转后怎么找到上一组的新尾,怎么找到…...

深度学习详解

深度学习(Deep Learning,DL)是机器学习(Machine Learning,ML)中的一个子领域,利用多层次(深层)神经网络来自动从数据中提取特征和规律,模仿人脑的神经系统来进…...

鸿蒙分享(一):添加模块,修改app名称图标

码仓库:https://gitee.com/linguanzhong/share_harmonyos 鸿蒙api:12 新建公共模块common 在entry的oh-package.json5添加dependencies,引入common模块 "dependencies": {"common": "file:../common" } 修改app名称&…...

【Redis】not support: redis

1、查看redis进程 2、查看是否安装redis扩展,此处以宝塔为例...

【集群划分】含分布式光伏的配电网集群电压控制【33节点】

目录 主要内容 模型研究 1.节点电压灵敏度的计算 2.Kmeans聚类划分 3.集群K值 部分代码 运行结果 下载链接 主要内容 该程序参考文献《含分布式光伏的配电网集群划分和集群电压协调控制》,基于社团检测算法,实现基于电气距离和区域电压调节能…...

嵌入式蓝桥杯学习5 定时中断实现按键

Cubemx配置 打开cubemx。 前面的配置与前文一样,这里主要配置基本定时器的定时功能。 1.在Timer中点击TIM6,勾选activated。配置Parameter Settings中的预分频器(PSC)和计数器(auto-reload Register) 补…...