全国大学生数据建模比赛——深度学习
全国大学生数学建模比赛中,深度学习可以成为解决复杂问题的有力手段。
一、深度学习的优势在比赛中的体现
- 强大的模式识别能力:深度学习模型,如卷积神经网络(CNN)和循环神经网络(RNN),在处理图像、文本、时间序列等数据方面表现出卓越的性能。在数学建模比赛中,可能会遇到需要对图像进行分类、对文本进行情感分析或对时间序列数据进行预测等问题,深度学习可以有效地提取数据中的特征,提高模型的准确性。
- 自动特征提取:与传统的机器学习方法相比,深度学习模型能够自动从原始数据中学习特征,无需人工设计特征。这在处理大规模、高维度数据时尤为重要,可以节省大量的时间和精力。
- 良好的泛化能力:经过充分训练的深度学习模型通常具有较好的泛化能力,能够在新的数据上表现出良好的性能。这对于数学建模比赛中未知的测试数据非常关键,能够提高模型的可靠性和实用性。
二、在比赛中应用深度学习的步骤
-
问题理解与数据收集:
- 首先,深入理解比赛问题的背景和要求,确定需要解决的具体问题。
- 然后,收集与问题相关的各种数据,包括训练数据和测试数据。数据的质量和数量对深度学习模型的性能至关重要。
-
数据预处理:
- 对收集到的数据进行预处理,包括数据清洗、归一化、标准化等操作。对于图像数据,可能还需要进行裁剪、缩放、旋转等增强操作,以增加数据的多样性。
- 将数据划分为训练集、验证集和测试集,用于模型的训练、调参和评估。
-
模型选择与搭建:
- 根据问题的特点和数据的类型,选择合适的深度学习模型。例如,对于图像分类问题,可以选择 CNN;对于文本处理问题,可以选择 RNN 或 Transformer 架构。
- 使用深度学习框架,如 TensorFlow、PyTorch 等,搭建所选的模型。可以从现有的开源模型开始,根据需要进行修改和调整。
-
模型训练与调参:
- 使用训练集对模型进行训练,调整模型的参数,以最小化损失函数。可以采用随机梯度下降等优化算法,设置适当的学习率、批次大小等参数。
- 在训练过程中,使用验证集对模型进行评估,及时调整模型的结构和参数,防止过拟合。可以采用正则化、Dropout 等技术来提高模型的泛化能力。
-
模型评估与改进:
- 使用测试集对训练好的模型进行最终评估,计算模型的准确率、召回率、F1 值等指标,评估模型的性能。
- 根据评估结果,分析模型存在的问题,如过拟合、欠拟合等,采取相应的改进措施,如增加数据量、调整模型结构、改进训练方法等。
三、注意事项与挑战
- 计算资源需求:深度学习模型通常需要大量的计算资源,包括 GPU 等硬件设备。在比赛中,可能需要合理安排计算资源,提高计算效率。
- 数据量要求:深度学习模型需要大量的训练数据才能发挥出良好的性能。在数据量有限的情况下,可以考虑采用数据增强、迁移学习等技术来提高模型的性能。
- 模型解释性:深度学习模型通常具有较高的复杂性,难以解释其决策过程。在比赛中,可能需要对模型的结果进行解释和说明,以增强模型的可信度。
- 时间限制:数学建模比赛通常有时间限制,需要在有限的时间内完成模型的训练和评估。因此,需要合理安排时间,选择合适的模型和算法,提高建模效率。
总之,在全国大学生数学建模比赛中,深度学习可以为解决复杂问题提供强大的工具。但在应用深度学习时,需要充分考虑问题的特点、数据的类型和计算资源等因素,选择合适的模型和算法,并进行充分的实验和调参,以提高模型的性能和可靠性。
例题案例:
1. TensorFlow框架的基本使用(5-1)
- 获取训练数据
构建一个简单的线性模型:W,b为参数,W=2,b=1,运用tf.random.normal() 产生1000个随机数,产生x,y数据。
用matplotlib库,用蓝色绘制训练数据。
- 定义模型
通过对样本数据的离散图可以判断,呈线性规律变化,因此可以建立一个线性模型,即 ,把该线性模型定义为一个简单的类,里面封装了变量和计算,变量设置用tf.Variable()。
- 定义损失函数
损失函数是衡量给定输入的模型输出与期望输出的匹配程度,采用均方误差(L2范数损失函数)。
- 模型训练
运用数据和模型来训练得到模型的变量(W和b),观察W和b的变化(使用matplotlib绘制W和b的变化情况曲线)。
import tensorflow as tf
import matplotlib.pyplot as plt# 步骤1:生成训练数据
num_samples = 1000
true_W = 2
true_b = 1
inputs = tf.random.normal(shape=(num_samples,))
noise = tf.random.normal(shape=(num_samples,))
outputs = inputs * true_W + true_b + noise# 绘制训练数据
plt.scatter(inputs, outputs, c='b', label='Training data')
plt.xlabel('Input')
plt.ylabel('Output')
plt.legend()
plt.show()# 步骤2:定义模型
class LinearModel(tf.Module):def __init__(self):self.W = tf.Variable(tf.random.normal(shape=(), stddev=0.1))self.b = tf.Variable(tf.random.normal(shape=(), stddev=0.1))def __call__(self, x):return self.W * x + self.b# 步骤3:定义损失函数
def loss(y_true, y_pred):return tf.reduce_mean(tf.square(y_true - y_pred))# 步骤4:模型训练
model = LinearModel()
learning_rate = 0.1
epochs = 50
history_W, history_b = [], []for epoch in range(epochs):with tf.GradientTape() as tape:current_loss = loss(outputs, model(inputs))dW, db = tape.gradient(current_loss, [model.W, model.b])model.W.assign_sub(learning_rate * dW)model.b.assign_sub(learning_rate * db)history_W.append(model.W.numpy())history_b.append(model.b.numpy())# 可视化W和b的变化
plt.plot(history_W, label='W')
plt.plot(history_b, label='b')
plt.xlabel('Epochs')
plt.ylabel('Values')
plt.legend()
plt.show()
2. 多层神经网络分类(5-2)
- 数据获取与预处理
MNIST 数据集来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST). 训练集 (training set) 由来自 250 个不同人手写的数字构成, 其中 50% 是高中学生, 50% 来自人口普查局 (the Census Bureau) 的工作人员. 测试集(test set) 也是同样比例的手写数字数据。
每张图像的大小都是28x28像素。MNIST数据集有60000张图像用于训练和10000张图像用于测试,其中每张图像都被标记了对应的数字(0-9)。
- 加载数据集
- 查看数据集
- 归一化处理
- 模型构建
- 模型定义
- 编译模型
- 输出模型参数
- 模型训练
- 训练
- 获取训练历史数据中的各指标值
- 绘制指标在训练过程中的变化图
- 模型评估
使用测试集对模型进行评估
代码:
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
# 加载MNIST数据集
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 输出第一张图片和对应的标签
# 查看训练集中的一张图像和对应的标签
plt.imshow(x_train[0], cmap='gray')
plt.title(f"Label: {x_train[0]}")
plt.axis('off')
plt.show()
# 查看测试集中的一张图像和对应的标签
plt.imshow(x_test[0], cmap='gray')
plt.title(f"Label: {x_test[0]}")
plt.axis('off')
plt.show()
# 对输入数据进行归一化处理
x_train = x_train / 255.0
x_test = x_test / 255.0
# 定义显示图片的函数
def plot_images(images):plt.imshow(images, cmap='binary')plt.show()
# 构建神经网络模型
model = tf.keras.models.Sequential([tf.keras.layers.Flatten(input_shape=(28,28)), # 将输入展平为一维数组tf.keras.layers.Dense(256, activation='relu'), # 全连接层,使用ReLU激活函数tf.keras.layers.Dropout(0.2), # Dropout层,可以防止过拟合tf.keras.layers.Dense(128, activation='relu'), # 全连接层,使用ReLU激活函数tf.keras.layers.Dense(64, activation='relu'),tf.keras.layers.Dense(10, activation='softmax') # 输出层,使用softmax激活函数输出分类概率
])
# 编译模型
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy', # 使用交叉熵损失函数metrics=['sparse_categorical_accuracy'])# 输出模型结构
model.summary()
# 训练模型
history = model.fit(x_train, y_train, epochs=50, validation_split=0.2, verbose=1)
train_loss = history.history['loss']
val_loss = history.history['val_loss']
train_accuracy = history.history['sparse_categorical_accuracy']
val_accuracy = history.history['val_sparse_categorical_accuracy']
# 生成图形
plt.figure(figsize=(12, 4))
# Loss 图
plt.subplot(1, 2, 1)
plt.plot(train_loss, label='Training Loss')
plt.plot(val_loss, label='Validation Loss')
plt.title('Training and Validation Loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
# Accuracy 图
plt.subplot(1, 2, 2)
plt.plot(train_accuracy, label='Training Accuracy')
plt.plot(val_accuracy, label='Validation Accuracy')
plt.title('Training and Validation Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.legend()
plt.show()test_loss, test_accuracy = model.evaluate(x_test, y_test)
print(f"Test Loss: {test_loss}")
print(f"Test Accuracy: {test_accuracy}")
3. 多层神经网络回归(5-3)
- 数据获取与预处理
Auto MPG 数据集,它记录了各种汽车效能指标MPG(Mile Per Gallon)与气缸数、重量、马力等因素的真实数据。除了产地的数字字段表示类别外,其他字段都是数值类型。对于产地地段,1 表示美国,2 表示欧洲,3 表示日本。
- 加载数据集
column_names = ['MPG','Cylinders','Displacement','Horsepower','Weight',
'Acceleration', 'Model Year', 'Origin'] #选定需要的数据特征
raw_dataset = pd.read_csv('./data/auto-mpg.data', names=column_names,
na_values = "?", comment='\t',
sep=" ", skipinitialspace=True) #读取刚下载的数据
- 数据清洗
统计数据集中各列中空值的个数,并删除包含空值的行。
- 将Origin列转换为one-hot(独热)编码。
- 数据探索
- 使用describe方法查看数据的统计指标
- 使用seaborn库中pairplot方法绘制"MPG", "Cylinders", "Displacement", "Weight"四列的联合分布图
- 数据标准化
labels = dataset.pop('MPG') #从数据集中取出目标值MPG
#数据标准化
from sklearn.preprocessing import StandardScaler
def norm(x):
return (x - train_stats['mean']) / train_stats['std'] #标准化公式
scaler = StandardScaler()
normed_dataset = scaler.fit_transform(dataset)
- 划分训练集与测试集
#拆分训练数据集和测试数据集,将数据集拆分为一个训练数据集和一个测试数据集。
X_train, X_test, Y_train, Y_test = train_test_split(normed_dataset,labels,test_size=0.2,random_state=0)
- 模型构建
- 模型定义
model = tf.keras.Sequential([
tf.keras.layers.Dense(64, activation='relu', input_shape=[X_train.shape[1]]),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(1)
])
- 编译模型
loss='mse' #损失用mse
optimizer='adam'
metrics=['mae', 'mse'])
- 输出模型参数
print(model.summary())
- 模型训练
- 训练
epochs=100,
validation_split = 0.2
verbose=1
- 获取训练历史数据中的各指标值
mae = history.history['mae']
val_mae = history.history['val_mae']
mse = history.history['mse']
val_mse = history.history['val_mse']
- 绘制指标在训练过程中的变化图
plt.figure(1)
plt.plot(mae, label='Training MAE')
plt.plot(val_mae, label='Validation MAE')
plt.title('Training and Validation MAE')
plt.legend()
plt.figure(2)
plt.plot(mse, label='Training MSE')
plt.plot(val_mse, label='Validation MSE')
plt.title('Training and Validation MSE')
plt.legend()
plt.show()
- 模型评估
使用测试集对模型进行评估
# 测试模型
model.evaluate(X_test, Y_test, verbose=1)
代码:
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import tensorflow as tf
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 加载数据集
column_names = ['MPG','Cylinders','Displacement','Horsepower','Weight','Acceleration', 'Model Year', 'Origin']
raw_dataset = pd.read_csv('auto-mpg.data', names=column_names,na_values = "?", comment='\t',sep=" ", skipinitialspace=True)
print(raw_dataset)
# 数据清洗
dataset = raw_dataset.dropna()
# 将Origin列转换为one-hot编码
dataset['Origin'] = dataset['Origin'].map({1: 'USA', 2: 'Europe', 3: 'Japan'})
dataset = pd.get_dummies(dataset, columns=['Origin'], prefix='', prefix_sep='')
# 数据探索
print(dataset.describe())
sns.pairplot(dataset[['MPG', 'Cylinders', 'Displacement', 'Weight']], diag_kind='kde')
# 数据标准化
labels = dataset.pop('MPG')
train_stats = dataset.describe().transpose()
def norm(x):return (x - train_stats['mean']) / train_stats['std']
normed_dataset = norm(dataset)
# 划分训练集与测试集
X_train, X_test, Y_train, Y_test = train_test_split(normed_dataset, labels, test_size=0.2, random_state=0)
# 模型构建
model = tf.keras.Sequential([tf.keras.layers.Dense(64, activation='relu', input_shape=[X_train.shape[1]]),tf.keras.layers.Dropout(0.3),tf.keras.layers.Dense(64, activation='relu'),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(64, activation='relu'),tf.keras.layers.Dense(1)
])
# 编译模型
model.compile(loss='mse', optimizer='adam', metrics=['mae', 'mse'])# 输出模型参数
print(model.summary())
# 模型训练
history = model.fit(X_train, Y_train, epochs=1000, validation_split=0.3, verbose=1)
# 获取训练历史数据中的各指标值
mae = history.history['mae']
val_mae = history.history['val_mae']
mse = history.history['mse']
val_mse = history.history['val_mse']
plt.figure()
plt.plot(mae, label='Training MAE')
plt.plot(val_mae, label='Validation MAE')
plt.title('Training and Validation MAE')
plt.legend()
plt.show()
plt.figure()
plt.plot(mse, label='Training MSE')
plt.plot(val_mse, label='Validation MSE')
plt.title('Training and Validation MSE')
plt.legend()
plt.show()
# 模型评估
h1=model.evaluate(X_test, Y_test, verbose=1)
print(h1)
数据集例样:
18.0 8 307.0 130.0 3504. 12.0 70 1 "chevrolet chevelle malibu"
15.0 8 350.0 165.0 3693. 11.5 70 1 "buick skylark 320"
18.0 8 318.0 150.0 3436. 11.0 70 1 "plymouth satellite"
16.0 8 304.0 150.0 3433. 12.0 70 1 "amc rebel sst"
17.0 8 302.0 140.0 3449. 10.5 70 1 "ford torino"
15.0 8 429.0 198.0 4341. 10.0 70 1 "ford galaxie 500"
14.0 8 454.0 220.0 4354. 9.0 70 1 "chevrolet impala"
14.0 8 440.0 215.0 4312. 8.5 70 1 "plymouth fury iii"
14.0 8 455.0 225.0 4425. 10.0 70 1 "pontiac catalina"
15.0 8 390.0 190.0 3850. 8.5 70 1 "amc ambassador dpl"
15.0 8 383.0 170.0 3563. 10.0 70 1 "dodge challenger se"
14.0 8 340.0 160.0 3609. 8.0 70 1 "plymouth 'cuda 340"
15.0 8 400.0 150.0 3761. 9.5 70 1 "chevrolet monte carlo"
14.0 8 455.0 225.0 3086. 10.0 70 1 "buick estate wagon (sw)"
24.0 4 113.0 95.00 2372. 15.0 70 3 "toyota corona mark ii"
22.0 6 198.0 95.00 2833. 15.5 70 1 "plymouth duster"
18.0 6 199.0 97.00 2774. 15.5 70 1 "amc hornet"
21.0 6 200.0 85.00 2587. 16.0 70 1 "ford maverick"
27.0 4 97.00 88.00 2130. 14.5 70 3 "datsun pl510"
26.0 4 97.00 46.00 1835. 20.5 70 2 "volkswagen 1131 deluxe sedan"
25.0 4 110.0 87.00 2672. 17.5 70 2 "peugeot 504"
24.0 4 107.0 90.00 2430. 14.5 70 2 "audi 100 ls"
25.0 4 104.0 95.00 2375. 17.5 70 2 "saab 99e"
26.0 4 121.0 113.0 2234. 12.5 70 2 "bmw 2002"
21.0 6 199.0 90.00 2648. 15.0 70 1 "amc gremlin"
10.0 8 360.0 215.0 4615. 14.0 70 1 "ford f250"
10.0 8 307.0 200.0 4376. 15.0 70 1 "chevy c20"
11.0 8 318.0 210.0 4382. 13.5 70 1 "dodge d200"
9.0 8 304.0 193.0 4732. 18.5 70 1 "hi 1200d"
27.0 4 97.00 88.00 2130. 14.5 71 3 "datsun pl510"
28.0 4 140.0 90.00 2264. 15.5 71 1 "chevrolet vega 2300"
25.0 4 113.0 95.00 2228. 14.0 71 3 "toyota corona"
25.0 4 98.00 ? 2046. 19.0 71 1 "ford pinto"
19.0 6 232.0 100.0 2634. 13.0 71 1 "amc gremlin"
16.0 6 225.0 105.0 3439. 15.5 71 1 "plymouth satellite custom"
17.0 6 250.0 100.0 3329. 15.5 71 1 "chevrolet chevelle malibu"
19.0 6 250.0 88.00 3302. 15.5 71 1 "ford torino 500"
18.0 6 232.0 100.0 3288. 15.5 71 1 "amc matador"
14.0 8 350.0 165.0 4209. 12.0 71 1 "chevrolet impala"
14.0 8 400.0 175.0 4464. 11.5 71 1 "pontiac catalina brougham"
14.0 8 351.0 153.0 4154. 13.5 71 1 "ford galaxie 500"
14.0 8 318.0 150.0 4096. 13.0 71 1 "plymouth fury iii"
12.0 8 383.0 180.0 4955. 11.5 71 1 "dodge monaco (sw)"
13.0 8 400.0 170.0 4746. 12.0 71 1 "ford country squire (sw)"
13.0 8 400.0 175.0 5140. 12.0 71 1 "pontiac safari (sw)"
18.0 6 258.0 110.0 2962. 13.5 71 1 "amc hornet sportabout (sw)"
22.0 4 140.0 72.00 2408. 19.0 71 1 "chevrolet vega (sw)"
19.0 6 250.0 100.0 3282. 15.0 71 1 "pontiac firebird"
18.0 6 250.0 88.00 3139. 14.5 71 1 "ford mustang"
23.0 4 122.0 86.00 2220. 14.0 71 1 "mercury capri 2000"
28.0 4 116.0 90.00 2123. 14.0 71 2 "opel 1900"
30.0 4 79.00 70.00 2074. 19.5 71 2 "peugeot 304"
30.0 4 88.00 76.00 2065. 14.5 71 2 "fiat 124b"
31.0 4 71.00 65.00 1773. 19.0 71 3 "toyota corolla 1200"
35.0 4 72.00 69.00 1613. 18.0 71 3 "datsun 1200"
27.0 4 97.00 60.00 1834. 19.0 71 2 "volkswagen model 111"
26.0 4 91.00 70.00 1955. 20.5 71 1 "plymouth cricket"
24.0 4 113.0 95.00 2278. 15.5 72 3 "toyota corona hardtop"
25.0 4 97.50 80.00 2126. 17.0 72 1 "dodge colt hardtop"
23.0 4 97.00 54.00 2254. 23.5 72 2 "volkswagen type 3"
20.0 4 140.0 90.00 2408. 19.5 72 1 "chevrolet vega"
21.0 4 122.0 86.00 2226. 16.5 72 1 "ford pinto runabout"
13.0 8 350.0 165.0 4274. 12.0 72 1 "chevrolet impala"
14.0 8 400.0 175.0 4385. 12.0 72 1 "pontiac catalina"
15.0 8 318.0 150.0 4135. 13.5 72 1 "plymouth fury iii"
14.0 8 351.0 153.0 4129. 13.0 72 1 "ford galaxie 500"
17.0 8 304.0 150.0 3672. 11.5 72 1 "amc ambassador sst"
11.0 8 429.0 208.0 4633. 11.0 72 1 "mercury marquis"
13.0 8 350.0 155.0 4502. 13.5 72 1 "buick lesabre custom"
12.0 8 350.0 160.0 4456. 13.5 72 1 "oldsmobile delta 88 royale"
13.0 8 400.0 190.0 4422. 12.5 72 1 "chrysler newport royal"
19.0 3 70.00 97.00 2330. 13.5 72 3 "mazda rx2 coupe"
相关文章:

全国大学生数据建模比赛——深度学习
全国大学生数学建模比赛中,深度学习可以成为解决复杂问题的有力手段。 一、深度学习的优势在比赛中的体现 强大的模式识别能力:深度学习模型,如卷积神经网络(CNN)和循环神经网络(RNN)࿰…...

Qt技巧(二)-滑动界面,轮询控件,循环操作控件
在Qt界面开发过程中,我们常常要对同类部件,具有同样功能的一系列部件进行操作,比如: 这个页面该怎么设计,中间的几个选项该怎么操作? 我们在主工程中添加一个设计师界面类,类名设置为“BrandF…...

003——单链表
1.链式存储的特点 逻辑(通过指针实现)上相邻,物理上可相邻可不相邻 2.结点(节点都可以) 4(&8) 8(&6) 6(&1) 1(&…...
XILINX平台下LINUX DMA驱动调研
专栏目录 高质量文章导航-持续更新中-CSDN博客 基础概念 VA:virtual address称为虚拟地址, PA:physical address称为物理地址。 CPU通过地址来访问内存中的单元,如果CPU没有MMU,或者有MMU但没有启动,那么CPU内核在取指令或者访问内存时发出的地址(此时必须是物理地址…...
Oracle数据库安装和配置指南
Oracle数据库是一款功能强大的企业级关系数据库管理系统(RDBMS),广泛应用于各种规模的企业和组织。其强大的性能和丰富的功能使其成为数据库管理的首选解决方案之一。以下是关于如何安装和配置 Oracle 数据库的详细指南。 一、准备工作 在开…...

制造业中工艺路线(工序)与产线(工作中心)关系
一.工艺路线与生产线是数字孪生中的虚实关系: 1.工艺路线为虚,生产线体为实; 2.工艺路线指导生产线的生产组织,生产线承载工艺路线的能力,把虚拟的生产信息流变成真实的产流。 二.工艺路线与生产线是数字孪生中互为“…...
目标跟踪算法——ByteTrack算法原理解析
文章目录 ByteTrack1. ByteTrack算法步骤:2. 算法解释2.1 模型初始化2.2 模型更新算法流程2.2.1 检测结果划分,划分为高分和较低分段2.2.2 高分段处理手段2.2.3 最优匹配与未匹配划分2.2.4 低分框再匹配2.2.5 未确认轨迹处理2.2.6 更新状态 2.3 匈牙利匹…...

C语言编译的过程
文章目录 1. 预处理(Preprocessing)2. 编译(Compilation)3. 汇编(Assembly)4. 链接(Linking)总结 c语言通过编译器直接编译成机器语言程序。 C语言程序的编译过程通常分为四个主要步…...

前端面试题——栈与队列、动态路由、链表
栈、队列与链表 Java数据结构栏目总结-CSDN博客 栈(Stack) 栈是一种后进先出(LIFO, Last In First Out)的数据结构。它只允许在栈顶进行添加(push)或删除(pop)元素的操作。 基本操…...
Java算法之计数排序(Counting Sort)
简介 计数排序是一种线性时间复杂度的排序算法,它不依赖于元素之间的比较,而是通过统计数组中每个元素出现的次数,然后根据这些统计信息对元素进行排序。这种算法特别适用于整数且整数的范围不是非常大时。 算法步骤 找出数组中的最大值。…...

【系统架构设计师-2012年】综合知识-答案及详解
更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【第1~2题】【第3~4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10~11题】【第12~13题】【第14~19题】【第20~21题】【第22~24题】【第25~26题】【第27~31题】【第32~33题】【第34~36题】【第37…...

webpack4手动搭建Vue项目
小满视频 很多解释使用通义灵码搜的,通义灵码的搜索结果也是有错误的全程使用pnpm包管理工具,和npm的用法基本一样 学习总结 1. 多看看webpack官网 2. webpack的作用:配置一堆东西,达到运行程序的目的 3. 无论什么东西都转成js,…...
Python爬虫所需的技术及其原理(简单易懂)
导言 随着互联网的发展,大量的数据被存储在网络上,而我们需要从中获取有用的信息。Python作为一种功能强大且易于学习的编程语言,被广泛用于网络爬虫的开发。本文将详细介绍Python爬虫所需的技术及其原理,并提供相关的代码案例。…...

FxFactory 8 for Mac 视觉特效插件包安装
Mac分享吧 文章目录 介绍页面效果一、下载软件二、开始安装1、Install安装2、显示软件页面,表示安装成功3、补丁安装 三、注意事项1、若已安装过其他版本,需要使用软件自带的卸载功能进行软件卸载,再安装此版本 安装完成!&#x…...

将语义分割的标签转换为实例分割(yolo)的标签
语义分割的标签(目标处为255,其余处为0) 实例分割的标签(yolo.txt),描述边界的多边形顶点的归一化位置 绘制在原图类似蓝色的边框所示。 废话不多说,直接贴代码; import os import cv2 imp…...
QT 遍历ini配置文件
在 Qt 中,处理 INI 配置文件是一项常见任务,通常使用 QSettings 类来读取和写入这些文件。QSettings 提供了一种方便的方式来操作 INI 文件中的配置数据。下面是如何使用 QSettings 遍历和处理 INI 配置文件的示例。 示例代码 假设有一个名为 config.i…...

ecmascript和javascript的区别详细讲解
大家好,我是程序员小羊! 前言: ECMAScript 和 JavaScript是紧密相关的术语,但它们有着各自明确的定义和用途。要理解它们的区别,首先需要从它们的起源、发展历史、技术架构以及具体应用领域来分析。以下是对它们的详…...

【Python报错已解决】“ModuleNotFoundError: No module named ‘timm‘”
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言:一、问题描述1.1 报错示例:当我们尝试导入timm库时,可能会看到以下错误信息。…...
「图::存储」链式邻接表|链式前向星(C++)
前置知识 上一节我们介绍了三种基本的存图结构: 「图」邻接矩阵|边集数组|邻接表(C) 概述 他们各有优劣,为了综合他们的性能, 这一节我们来介绍两种以这三种结构为基础实现的高级存储结构:链式邻接表|…...

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 10数据中心中的BGP
本章解答以下问题: ASN,团体(community),属性(attribute),最佳路径这些BGP术语是什么疑似?在数据中心中应该使用eBGP还是iBGP?在数据中心使用BGP时,应采用什…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...