Keras 3 示例:开启深度学习之旅

Keras 3 示例:开启深度学习之旅

一、Keras 3 简介

Keras 3是一个强大的深度学习框架,它为开发者提供了简洁、高效的方式来构建和训练神经网络。它在之前版本的基础上进行了改进和优化,具有更好的性能、兼容性和功能扩展性。无论是初学者还是经验丰富的研究人员,都可以利用 Keras 3快速实现自己的深度学习想法。

二、环境搭建与安装示例

(一)安装 Keras 3

首先,确保已经安装了合适版本的 Python(建议使用 Python 3.7 及以上版本)。然后,可以使用以下命令安装 Keras 3:

pip install keras

如果要在特定的虚拟环境中安装,可以先激活虚拟环境,再执行上述安装命令。

(二)安装相关依赖

Keras 3通常依赖于后端计算引擎,如 TensorFlow。如果还未安装 TensorFlow,可以使用以下命令安装:

pip install tensorflow

这样就完成了基本的环境搭建,可以开始使用 Keras 3进行开发。

三、图像分类示例

(一)使用 MNIST 数据集

  1. 数据加载
from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

这简单的几行代码就可以加载著名的 MNIST 手写数字数据集,其中 x_trainx_test 分别是训练集和测试集的图像数据,y_trainy_test 是对应的标签。
2. 数据预处理

x_train = x_train.reshape(-1, 28, 28, 1).astype('float32') / 255.0
x_test = x_test.reshape(-1, 28, 28, 1).astype('float32') / 255.0from keras.utils import to_categorical
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

这里将图像数据重塑为合适的形状,并进行归一化处理,同时将标签进行 one - hot 编码,以便模型更好地处理。
3. 构建模型

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Densemodel = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))

这个简单的卷积神经网络模型先使用卷积层提取特征,然后通过池化层减少数据维度,再将数据展平后连接全连接层,最后输出每个数字类别的概率。
4. 模型编译与训练

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, batch_size=128, validation_data=(x_test, y_test))

这里指定了优化器为 Adam,损失函数为交叉熵损失,并使用准确率作为评估指标。然后训练模型,指定训练轮数和批次大小,并在测试集上进行验证。
5. 模型评估

loss, accuracy = model.evaluate(x_test, y_test)
print(f"Test loss: {loss}, Test accuracy: {accuracy}")

这可以得到模型在测试集上的损失和准确率,评估模型的性能。

(二)使用 CIFAR - 10 数据集

  1. 数据加载与预处理
from keras.datasets import cifar10
(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.0y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

加载 CIFAR - 10 图像数据集,并进行类似的归一化和标签编码操作。
2. 构建更复杂的模型

model = Sequential()
model.add(Conv2D(64, (3, 3), padding='same', activation='relu', input_shape=(32, 32, 3)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), padding='same', activation='relu'))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dense(10, activation='softmax'))

这个模型在 CIFAR - 10 数据集上构建了一个更深的卷积神经网络,包含更多的卷积层和池化层,以提取更复杂的图像特征。
3. 编译、训练和评估

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10, batch_size=64, validation_data=(x_test, y_test))
loss, accuracy = model.evaluate(x_test, y_test)
print(f"Test loss: {loss}, Test accuracy: {accuracy}")

同样地,编译模型、进行训练并评估其在测试集上的性能。

四、目标检测示例

(一)简单目标检测模型框架

  1. 数据准备(模拟数据生成)
import numpy as np
# 模拟生成一些简单的图像数据和目标框数据
num_images = 100
image_width, image_height = 64, 64
num_objects_per_image = 2
images = np.random.rand(num_images, image_width, image_height, 3).astype('float32')
boxes = []
for i in range(num_images):image_boxes = []for j in range(num_objects_per_image):x1, y1 = np.random.randint(0, image_width - 10), np.random.randint(0, image_height - 10)x2, y2 = x1 + np.random.randint(5, 10), y1 + np.random.randint(5, 10)class_id = np.random.randint(0, 5)  # 假设 5 种目标类别image_boxes.append([x1, y1, x2, y2, class_id])boxes.append(np.array(image_boxes))
boxes = np.array(boxes)

这里模拟生成了一些简单的图像和目标框数据,用于示例目的。在实际应用中,可以使用真实的目标检测数据集。
2. 模型构建(基于卷积神经网络)

from keras.models import Model
from keras.layers import Input, Conv2D, MaxPooling2D, Flatten, Denseimage_input = Input(shape=(image_width, image_height, 3))
x = Conv2D(32, (3, 3), activation='relu')(image_input)
x = MaxPooling2D((2, 2))(x)
x = Conv2D(64, (3, 3), activation='relu')(x)
x = MaxPooling2D((2, 2))(x)
x = Flatten()(x)
box_output = Dense(5 * (4 + 1))(x)  # 假设每个目标用 (x1,y1,x2,y2,class_id) 表示,5 种目标类别
model = Model(image_input, box_output)

这个模型基于卷积神经网络,接受图像输入,最后输出目标框的预测信息。
3. 模型编译与训练(简单示例)

model.compile(optimizer='adam', loss='mse')  # 使用均方误差作为损失函数,这里只是简单示例
model.fit(images, boxes, epochs=5, batch_size=8)

编译模型并使用模拟数据进行简单的训练,在实际应用中,需要更复杂的损失函数和训练策略。

(二)使用预训练模型进行目标检测(以 YOLO 风格为例)

  1. 加载预训练模型(假设已经有预训练权重)
from keras.models import load_model
pretrained_model = load_model('pretrained_yolo_style_model.h5')

这里假设已经有一个预训练的类似 YOLO 风格的目标检测模型的权重文件。
2. 数据预处理(与预训练模型匹配)

# 假设需要将输入图像调整到模型所需的特定尺寸,并进行归一化等操作
test_image = np.random.rand(1, 416, 416, 3).astype('float32')  # 以 416x416 为例,实际根据模型调整
test_image = test_image / 255.0

根据预训练模型的要求对输入图像进行预处理。
3. 目标检测推理

detections = pretrained_model.predict(test_image)
# 对检测结果进行后处理,例如解析出目标框、类别和置信度等信息
# 这里省略具体的后处理代码,不同的模型有不同的后处理方式

使用预训练模型对输入图像进行目标检测推理,并得到检测结果,然后需要进行后处理来得到有意义的目标信息。

五、自然语言处理示例

(一)文本分类(使用 IMDB 影评数据集)

  1. 数据加载与预处理
from keras.datasets import imdb
from keras.preprocessing.sequence import pad_sequences
vocab_size = 10000
max_length = 200
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=vocab_size)
x_train = pad_sequences(x_train, maxlen=max_length)
x_test = pad_sequences(x_test, maxlen=max_length)

加载 IMDB 影评数据集,并将文本数据转换为固定长度的序列,只保留最常见的 vocab_size 个单词。
2. 构建模型(基于循环神经网络)

from keras.models import Sequential
from keras.layers import Embedding, LSTM, Densemodel = Sequential()
model.add(Embedding(vocab_size, 128, input_length=max_length))
model.add(LSTM(64))
model.add(Dense(1, activation='sigmoid'))

这个模型先使用嵌入层将单词索引转换为向量,然后使用 LSTM 层处理序列信息,最后通过一个全连接层输出文本属于正面或负面评价的概率。
3. 模型编译、训练与评估

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, batch_size=128, validation_data=(x_test, y_test))
loss, accuracy = model.evaluate(x_test, y_test)
print(f"Test loss: {loss}, Test accuracy: {accuracy}")

编译模型,使用二元交叉熵损失函数进行训练,并评估模型在测试集上的性能。

(二)文本生成(基于字符级 RNN)

  1. 数据准备(以一段文本为例)
text = "This is a sample text for text generation example. We will use this text to train a character - level RNN."
# 创建字符到索引和索引到字符的映射
chars = sorted(list(set(text)))
char_to_idx = {char: idx for idx, char in enumerate(chars)}
idx_to_char = {idx: char for char, idx in char_to_idx.items()}
# 将文本转换为序列
maxlen = 40
step = 3
sentences = []
next_chars = []
for i in range(0, len(text) - maxlen, step):sentences.append(text[i : i + maxlen])next_chars.append(text[i + maxlen])
x = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool)
y = np.zeros((len(sentences), len(chars)), dtype=np.bool)
for i, sentence in enumerate(sentences):for t, char in enumerate(sentence):x[i, t, char_to_idx[char]] = Truey[i, char_to_idx[next_chars[i]]] = True

这里准备了一段文本,创建了字符映射,并将文本转换为模型可接受的输入和输出格式,用于字符级的文本生成。
2. 构建模型(简单的 RNN)

from keras.models import Sequential
from keras.layers import LSTM, Densemodel = Sequential()
model.add(LSTM(128, input_shape=(maxlen, len(chars))))
model.add(Dense(len(chars), activation='softmax'))

构建一个简单的 LSTM 模型,接受字符序列作为输入,输出下一个字符的概率分布。
3. 模型编译与训练

model.compile(optimizer='adam', loss='categorical_crossentropy')
model.fit(x, y, epochs=20, batch_size=128)

编译模型并进行训练,训练完成后可以使用模型进行文本生成。
4. 文本生成

import random
start_index = random.randint(0, len(text) - maxlen - 1)
generated_text = text[start_index : start_index + maxlen]
for i in range(400):x_pred = np.zeros((1, maxlen, len(chars)))for t, char in enumerate(generated_text):x_pred[0, t, char_to_idx[char]] = Truepreds = model.predict(x_pred)[0]next_char_idx = np.random.choice(len(chars), p=preds)next_char = idx_to_char[next_char_idx]generated_text += next_chargenerated_text = generated_text[1:]
print(generated_text)

从文本中随机选择一个起始点,然后根据模型预测的概率逐个生成字符,得到新的文本。

六、序列到序列学习示例(机器翻译)

(一)数据准备(模拟英法翻译数据)

# 模拟一些简单的英法单词对
data = [('hello', 'bonjour'),('world', 'monde'),('how are you', 'comment allez - vous'),('I am fine', 'je vais bien'),('thank you', 'merci')
]
# 构建源语言和目标语言的词汇表
source_vocab = sorted(list(set([word for word, _ in data])))
target_vocab = sorted(list(set([word for _, word in data])))
source_to_idx = {word: idx for idx, word in enumerate(source_vocab)}
target_to_idx = {word: idx for idx, word in enumerate(target_vocab)}
# 将单词对转换为索引序列
max_source_length = max([len(word) for word, _ in data])
max_target_length = max([len(word) for _, word in data])
source_sequences = np.zeros((len(data), max_source_length), dtype='int32')
target_sequences = np.zeros((len(data), max_target_length), dtype='int32')
for i, (source_word, target_word) in enumerate(data):for j, char in enumerate(source_word):source_sequences[i, j] = source_to_idx[char]for j, char in enumerate(target_word):target_sequences[i, j] = target_to_idx[char]

这里模拟了一些简单的英法单词对,并构建了词汇表和将单词对转换为索引序列,用于序列到序列学习的示例。在实际应用中,可以使用大规模的翻译数据集。

(二)构建序列到序列模型

from keras.models import Model
from keras.layers import Input, LSTM, Dense# 编码器
encoder_inputs = Input(shape=(max_source_length,))
encoder_embedding = Embedding(len(source_vocab), 64)(encoder_inputs)
encoder_lstm = LSTM(64, return_state=True)
encoder_outputs, state_h, state_c = encoder_lstm(encoder_embedding)
encoder_states = [state_h, state_c]# 解码器
decoder_inputs = Input(shape=(max_target_length,))
decoder_embedding = Embedding(len(target_vocab), 64)
decoder_embedding_layer = decoder_embedding(decoder_inputs)
decoder_lstm = LSTM(64, return_sequences=True, return_state=True)
decoder_outputs, _, _ = decoder_lstm(decoder_embedding_layer, initial_state=encoder_states)
decoder_dense = Dense(len(target_vocab), activation='softmax')
decoder_outputs = decoder_dense(decoder_outputs)# 构建模型
model = Model([encoder_inputs, decoder_inputs], decoder_outputs)

这个序列到序列模型包括编码器和解码器。编码器将源语言序列编码为状态,解码器使用这些状态和目标语言的输入序列来生成翻译结果。

(三)模型编译与训练

model.compile(optimizer='rmsprop', loss='sparse_categorical_crossentropy')
model.fit([source_sequences, target_sequences[:, :-1]], target_sequences[:, 1:],epochs=100, batch_size=1)

编译模型:我们使用rmsprop优化器来调整模型的权重,以最小化损失函数。
训练模型:通过多次迭代训练,模型会逐渐学习到源语言和目标语言之间的映射关系,从而提高翻译的准确性。在实际应用中,对于大规模的机器翻译任务,我们需要使用更丰富的数据集、更复杂的模型结构和更合适的训练策略来获得更好的翻译效果

七、以下是一些 Keras 3 的其他示例:

(一)、图像生成(使用生成对抗网络 - GAN)

  1. 生成器模型构建
from keras.models import Sequential
from keras.layers import Dense, Reshape, Conv2DTranspose, BatchNormalization, LeakyReLUgenerator = Sequential()
generator.add(Dense(256 * 4 * 4, input_dim=100))
generator.add(Reshape((4, 4, 256)))
generator.add(Conv2DTranspose(128, (4, 4), strides=(2, 2), padding='same'))
generator.add(BatchNormalization())
generator.add(LeakyReLU(alpha=0.2))
generator.add(Conv2DTranspose(64, (4, 4), strides=(2, 2), padding='same'))
generator.add(BatchNormalization())
generator.add(LeakyReLU(alpha=0.2))
generator.add(Conv2DTranspose(3, (4, 4), strides=(2, 2), padding='same', activation='tanh'))

这里构建了一个生成器模型,它接受一个 100 维的随机噪声向量作为输入,并通过一系列的全连接层、转置卷积层、批归一化层和激活函数,逐步将其转换为一个 64x64x3 的图像(假设生成图像的尺寸为 64x64,3 通道表示 RGB)。

  1. 判别器模型构建
from keras.models import Sequential
from keras.layers import Conv2D, Flatten, Dense, LeakyReLUdiscriminator = Sequential()
discriminator.add(Conv2D(64, (4, 4), strides=(2, 2), padding='same', input_shape=(64, 64, 3)))
discriminator.add(LeakyReLU(alpha=0.2))
discriminator.add(Conv2D(128, (4, 4), strides=(2, 2), padding='same'))
discriminator.add(LeakyReLU(alpha=0.2))
discriminator.add(Conv2D(256, (4, 4), strides=(2, 2), padding='same'))
discriminator.add(LeakyReLU(alpha=0.2))
discriminator.add(Flatten())
discriminator.add(Dense(1, activation='sigmoid'))

判别器模型用于区分输入的图像是真实图像还是由生成器生成的假图像。它通过一系列的卷积层和激活函数来提取图像特征,最后通过一个全连接层输出一个概率值,表示输入图像为真实图像的可能性。

  1. 组合 GAN 模型并训练
from keras.models import Model
import numpy as np# 组合生成器和判别器
discriminator.trainable = False
gan_input = Input(shape=(100,))
generated_image = generator(gan_input)
gan_output = discriminator(generated_image)
gan = Model(gan_input, gan_output)# 编译 GAN 模型和判别器模型
gan.compile(loss='binary_crossentropy', optimizer='adam')
discriminator.compile(loss='binary_crossentropy', optimizer='adam')# 训练数据(这里假设已经有真实图像数据 real_images)
batch_size = 32
for epoch in range(100):# 训练判别器noise = np.random.normal(0, 1, (batch_size, 100))generated_images = generator.predict(noise)real_labels = np.ones((batch_size, 1))fake_labels = np.zeros((batch_size, 1))d_loss_real = discriminator.train_on_batch(real_images[:batch_size], real_labels)d_loss_fake = discriminator.train_on_batch(generated_images, fake_labels)d_loss = 0.5 * np.add(d_loss_real, d_loss_fake)# 训练 GAN(即训练生成器)noise = np.random.normal(0, 1, (batch_size, 100))g_loss = gan.train_on_batch(noise, np.ones((batch_size, 1)))

首先,我们将生成器和判别器组合成一个 GAN 模型。在训练过程中,先固定判别器的权重,训练生成器,然后再训练判别器。通过多次迭代,生成器逐渐学会生成更逼真的图像,以欺骗判别器。

(二)音频分类(使用 librosa 库加载音频数据)

  1. 数据加载与预处理
import librosa
import numpy as np# 加载音频文件
audio_path = 'example_audio.wav'
audio_data, sample_rate = librosa.load(audio_path)# 提取音频特征(这里使用梅尔频谱特征)
mel_spectrogram = librosa.feature.melspectrogram(y=audio_data, sr=sample_rate)
mel_spectrogram = librosa.power_to_db(mel_spectrogram)# 对特征进行归一化处理
mel_spectrogram = (mel_spectrogram - np.min(mel_spectrogram)) / (np.max(mel_spectrogram) - np.min(mel_spectrogram))# 假设我们有多个音频文件,将它们的特征存储在一个列表中
audio_features = []
audio_labels = []  # 对应的音频标签
# 这里省略了加载多个音频文件和标签的循环audio_features = np.array(audio_features)
audio_labels = np.array(audio_labels)

这里使用librosa库加载音频文件,并提取梅尔频谱特征。然后对特征进行归一化处理,以便于模型训练。在实际应用中,我们会处理多个音频文件,并将它们的特征和标签整理成合适的格式。

  1. 构建模型
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Densemodel = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=mel_spectrogram.shape))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))  # num_classes 是音频类别数

构建一个基于卷积神经网络的音频分类模型。模型通过卷积层和池化层提取音频特征中的局部模式,然后通过全连接层进行分类。

  1. 模型编译与训练
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(audio_features, audio_labels, epochs=10, batch_size=32)

编译模型,指定优化器、损失函数和评估指标。然后使用音频特征和标签数据训练模型,经过多次训练轮数,模型可以学习到音频特征与类别之间的关系,从而实现对新音频的分类。

(三)时间序列预测(使用股票价格数据)

  1. 数据加载与预处理(假设已经有股票价格数据)
import pandas as pd
import numpy as np# 加载股票价格数据(这里假设是一个 CSV 文件,包含日期和价格列)
stock_data = pd.read_csv('stock_prices.csv')
prices = stock_data['price'].values# 对数据进行归一化处理
prices = (prices - np.min(prices)) / (np.max(prices) - np.min(prices))# 构建时间序列数据
time_steps = 10  # 使用过去 10 个时间步的数据来预测下一个时间步的价格
X = []
y = []
for i in range(len(prices) - time_steps):X.append(prices[i : i + time_steps])y.append(prices[i + time_steps])
X = np.array(X).reshape(-1, time_steps, 1)
y = np.array(y)

这里加载股票价格数据,并对价格数据进行归一化处理。然后通过构建时间序列数据,将连续的time_steps个价格数据作为输入特征X,下一个时间步的价格作为目标y

  1. 构建模型(使用长短期记忆网络 - LSTM)
from keras.models import Sequential
from keras.layers import LSTM, Densemodel = Sequential()
model.add(LSTM(64, input_shape=(time_steps, 1)))
model.add(Dense(1))

构建一个基于 LSTM 的时间序列预测模型。LSTM 层能够处理时间序列数据中的长期依赖关系,模型最后输出一个预测的价格值。

  1. 模型编译与训练
model.compile(optimizer='adam', loss='mse')
model.fit(X, y, epochs=50, batch_size=32)

编译模型,使用均方误差(MSE)作为损失函数,因为这是一个回归问题。然后使用构建好的时间序列数据进行训练,经过多次训练轮数,模型可以学习到股票价格的时间序列模式,用于预测未来价格。

这些示例展示了 Keras 3 在不同领域的应用,包括图像生成、音频分类和时间序列预测等,希望能帮助你更好地理解和使用 Keras 3。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

九,数据类型存储

1、简单类型与复杂类型 简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型 值类型:简单数据类型/基本数据类型,在存储时变量中存储的时值本身,因此叫做值类型 string、number、boolean、undefined、null 注意&…

电通旗下VeryStar连摘Campaign 亚太科技MVP及鼎革奖两项大奖

近日,电通CXM(客户体验管理)旗下费芮互动VeryStar开发的OmniRetail零售数字化平台及其中的OmniCRM分别摘得重磅奖项。OmniCRM在Campaign亚太2024年度亚太地区Tech MVP中当选“最有价值科技产品”,OmniRetail荣获“2024「鼎革奖」数…

[ 应急响应靶场实战 ] VMware 搭建win server 2012应急响应靶机 攻击者获取服务器权限上传恶意病毒 防守方人员应急响应并溯源

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

「Mac畅玩鸿蒙与硬件17」鸿蒙UI组件篇7 - Animation 组件基础

在应用开发中,动画效果可以增强用户体验。鸿蒙框架提供了 translate、scale 和 rotate 等动画功能,允许对组件进行平移、缩放和旋转等操作。本篇将介绍 Animation 组件的基础知识和示例代码。 关键词 Animation 组件动画效果位置动画自动动画缩放动画 一…

2024年一带一路金砖技能大赛之大数据容器云开发

10.31备赛准备 C模块,大数据应用开发 1.前端Vue----请求服务端api接口json数据-----展示/图表 2.Node.js实现后端开发,为前端vue提供接口数据 3.部署在docker中 官方技能需求 创建vue框架项目 1、安装node.js(https://nodejs.org/zh-cn/d…

C++ 内存对齐:alignas 与 alignof

一、什么是内存对齐? 内存对齐是指数据在内存中按照特定的字节边界存储。一般情况下,处理器从内存读取数据时会更高效地读取对齐的数据。如果数据未对齐,处理器可能需要进行额外的内存访问,导致性能下降。对于某些平台&#xff0…

嵌入式linux系统中串口驱动框架分析

大家好,今天主要给大家分享一下,如何使用linux系统中的串口实现。 第一:串口基本简介 串口是很常见的一个外设,在Linux下通常通过串口和其他设备或传感器进行通信。根据电平的不同,串口可以分为TTL和RS232。不管是什么样的电平接口,驱动程序是一样的。 第二:Linux下UAR…

MongoDB 8.0.3版本安装教程

MongoDB 8.0.3版本安装教程 一、下载安装 1.进入官网 2.选择社区版 3.点击下载 4.下载完成后点击安装 5.同意协议,下一步 6.选择第二个Custon,自定义安装 7.选择安装路径 !记住安装路径 8.默认,下一步 9.取…

【力扣专题栏】面试题 01.02. 判定是否互为字符重排,如何利用数组模拟哈希表解决两字符串互排问题?

题解目录 1、题目描述解释2、算法原理解析3、代码编写(1)、两个数组分别模拟哈希表解决(2)、利用一个数组模拟哈希表解决问题 1、题目描述解释 2、算法原理解析 3、代码编写 (1)、两个数组分别模拟哈希表解决 class Solution { public:bool CheckPermutation(string s1, stri…

测长机在测量长度尺寸方面有哪些优势?如何保证测量的准确性?

测长机在测量长度尺寸方面具有以下优势: 一、高精度 1.分辨力高: 测长机通常具有很高的分辨力,能够精确测量到非常小的长度变化。例如,一些高精度测长机的分辨力可以达到微米甚至纳米级别,能够满足对精密工件和高精度…

人脑与机器连接:神经科技的伦理边界探讨

内容概要 在当今科技飞速发展的时代,人脑与机器连接已成为一个引人注目的前沿领域。在这一背景下,神经科技的探索为我们打开了一个全新的世界,从脑机接口到人工智能的飞跃应用,不仅加速了技术的进步,更触动了我们内心…

kd树的原理简述

1️⃣定义:给定一个二叉树与点集 P { x 1 , x 2 , . . . , x N } ⊆ R 2 P\{x_1,x_2,...,x_N\}\subseteq{}\mathbb{R}^2 P{x1​,x2​,...,xN​}⊆R2 对应关系: { 叶结点 i ↔ 一一对应 点 x i 中间结点 u ↔ 一多对应 以 u 为根子树的叶结点 ( P u ) ↔…

liunx CentOs7安装MQTT服务器(mosquitto)

查找 mosquitto 软件包 yum list all | grep mosquitto出现以上两个即可进行安装,如果没有出现则需要安装EPEL软件库。 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm查看 mosquitto 信息 yum info mosquitto安装 mosquitt…

Qt Designer客户端安装和插件集(pyqt5和pyside2)

GitHub - PyQt5/QtDesignerPlugins: Qt Designer PluginsQt Designer Plugins. Contribute to PyQt5/QtDesignerPlugins development by creating an account on GitHub.https://github.com/PyQt5/QtDesignerPlugins 一、下载客户端 https://github.com/PyQt5/QtDesigner/rel…

操作系统进程的描述与控制习题

1.什么是前趋图?为什么要引入前趋图? 前趋图(Precedence Graph)是一个有向无循环图,记为DAG(DirectedAcyclic Graph) 用于描述进程之间执行的前后关系 2.画出下面四条语句的前趋图 S1 a: x y; S2 b: z 1; S3 c: a - b; S4 w: c 1;3.什么程序并发执行…

第三十一章 Vue之路由(VueRouter)

目录 一、引言 1.1. 路由介绍 二、VueRouter 三、VueRouter的使用 3.1. 使用步骤(52) 3.2. 完整代码 3.2.1. main.js 3.2.2. App.vue 3.2.3. Friend.vue 3.2.4. My.vue 3.2.5. Find.vue 一、引言 1.1. 路由介绍 Vue中路由就是路径和组件的映…

精准选型跨境客服,网页服务更高效

跨境网页客服系统选型需考虑语言、功能、友好性及合规性。ZohoSalesIQ凭多语言支持、友好界面、移动兼容及数据保障成为优选,助力企业提升客户体验、高效沟通并满足数据安全需求。 一、跨境网页客服系统的重要性 1、提升客户体验 在跨境电商中,客户体验…

Pinia-状态管理

Pinia-状态管理 特点: 1. 轻量和模块化 Pinia 是一个轻量级的状态管理库,支持模块化管理,即可以将应用的状态分成多个 store 以实现更好的组织。使用 Pinia,可以定义多个 store,每个 store 都是一个独立的模块&#x…

【C++】对左值引用右值引用的深入理解(右值引用与移动语义)

🌈 个人主页:谁在夜里看海. 🔥 个人专栏:《C系列》《Linux系列》 ⛰️ 天高地阔,欲往观之。 ​ 目录 前言:对引用的底层理解 一、左值与右值 提问:左值在左,右值在右?…

go 聊天系统项目-1

1、登录界面 说明:这一节的内容采用 go mod 管理【GO111MODULE‘’】模块,从第二节开始使用【GO111MODULE‘off’】GOPATH 管理模块。具体参见 go 包相关知识 1.1登录界面代码目录结构 代码所在目录/Users/zld/Go-project/day8/chatroom/ 1.2登录界…