2023 年 数维杯(C题)国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

问题重述

信息技术和人工智能的迅速发展,特别关注大型语言模型(Large Language Models,LLMs)在全球范围内的广泛应用,以ChatGPT为代表。这些模型在机器人导航、语音识别、图像识别、自然语言处理和智能推荐等领域表现出色,为人们提供了丰富、智能和便捷的体验。
然而,随着这些技术的普及,也出现了一些潜在问题。首先,这些大型语言模型是基于文本训练的,而不同领域的语言和文化背景可能对生成的结果产生重要影响。其次,生成的文本可能存在语义偏见、逻辑不连贯和缺乏创造力的问题。最后,涉及隐私保护、版权保护以及学术不端行为等问题,特别是在学术领域可能存在使用AI生成论文导致的相关问题。
因此,虽然这些模型为我们带来了很多便利,但也需要认识到其潜在风险和挑战。在这个背景下,题目提出了一系列问题,旨在深入探讨使用AI生成文本可能引发的问题,并提出建立模型和方法来解决这些问题。
在这里插入图片描述

问题一

我们可以定义一些关键变量,然后通过对这些变量进行统计分析来寻找AI文本生成的基本规律。以下是一些可能的变量:

  1. W W W:生成的字数要求,取值为200字、500字等。
  2. G G G:生成次数,包括首次生成和点击"重新生成"按钮的次数。
  3. T T T:是否中英文翻译,取值为0表示未翻译,1表示中文翻译,2表示英文翻译。
  4. S S S:生成文本的风格,可以用一个离散值表示。

我们可以通过一个包含这些变量的矩阵 X X X 来表示数据:

X = [ W 1 G 1 T 1 S 1 W 2 G 2 T 2 S 2 ⋮ ⋮ ⋮ ⋮ W N G N T N S N ] X = \begin{bmatrix} W_1 & G_1 & T_1 & S_1 \\ W_2 & G_2 & T_2 & S_2 \\ \vdots & \vdots & \vdots & \vdots \\ W_N & G_N & T_N & S_N \end{bmatrix} X= W1W2WNG1G2GNT1T2TNS1S2SN

接下来,我们可以通过对矩阵 X X X 进行统计分析,找到生成文本的基本规律。例如,我们可以计算在特定字数要求下,重新生成的次数的平均值、中英文翻译的频率分布、不同风格的出现频率等。

使用统计学方法,例如计算均值、方差、频率分布等。例如,我们可以定义一个函数 (f(W, G, T, S)) 来表示生成文本的某个方面,然后通过对 (X) 中的数据进行分析,得到关于这个函数的统计信息。

f ( W , G , T , S ) = 某个方面的特征 f(W, G, T, S) = \text{某个方面的特征} f(W,G,T,S)=某个方面的特征

在简单多元回归中,通过回归模型的输出来判断文本是否为AI生成,设置一个阈值,当模型的输出超过这个阈值时,认为文本是由AI生成的。

在多元回归中,模型的输出 Y Y Y 可以表示为:

Y = β 0 + β 1 ⋅ W + β 2 ⋅ G + β 3 ⋅ T + β 4 ⋅ S + ϵ Y = \beta_0 + \beta_1 \cdot W + \beta_2 \cdot G + \beta_3 \cdot T + \beta_4 \cdot S + \epsilon Y=β0+β1W+β2G+β3T+β4S+ϵ

其中, β 0 , β 1 , β 2 , β 3 , β 4 \beta_0, \beta_1, \beta_2, \beta_3, \beta_4 β0,β1,β2,β3,β4是回归系数, ϵ \epsilon ϵ 是误差项。

设置一个阈值 T AI T_{\text{AI}} TAI,当 Y > T AI Y > T_{\text{AI}} Y>TAI 时,认为文本是由AI生成的,否则认为不是。

在进行假设检验时,我们的目标是判断某个回归系数是否显著不为零。假设检验通常涉及到以下步骤:

首先,我们建立两个假设,即零假设 H 0 H_0 H0备择假设 H 1 H_1 H1

  • H 0 H_0 H0: 回归系数等于零,即 β i = 0 \beta_i = 0 βi=0,表示该变量对生成文本的某个方面没有显著影响。
  • H 1 H_1 H1: 回归系数不等于零,即 β i ≠ 0 \beta_i \neq 0 βi=0,表示该变量对生成文本的某个方面有显著影响。

选择显著性水平(Significance Level),通常用 (\alpha) 表示,例如取 (\alpha = 0.05)。这代表我们允许的错误发生率,即在零假设为真时错误地拒绝它的概率。

计算检验统计量(Test Statistic),该统计量用于在给定显著性水平下决定是否拒绝零假设。对于回归系数 (\beta_i),检验统计量通常计算为:

t = β ^ i SE ( β ^ i ) t = \frac{\hat{\beta}_i}{\text{SE}(\hat{\beta}_i)} t=SE(β^i)β^i

其中, β ^ i \hat{\beta}_i β^i 是回归系数的估计值, SE ( β ^ i ) \text{SE}(\hat{\beta}_i) SE(β^i) 是估计的标准误差。
根据检验统计量计算 p-值,p-值表示在零假设为真的情况下,观察到当前检验统计量或更极端情况的概率。

在给定的显著性水平下(通常为 (\alpha = 0.05)),比较 p-值和显著性水平,如果 (p < \alpha),则拒绝零假设,认为回归系数显著不为零;如果 (p \geq \alpha),则接受零假设,表示没有足够的证据拒绝零假设。

如果拒绝了零假设,说明相应的变量对生成文本的某个方面有显著影响。反之,如果接受了零假设,说明该变量对生成文本的某个方面没有显著影响。

通过假设检验的步骤,判断每个变量的回归系数是否显著不为零,从而在统计学上推断它们对生成文本的影响。

问题二

我们可以考虑使用一种二元分类的方法,通过分析每一段文本的多个因素来判断该段是否由AI生成。

定义一些可能影响判断的变量:

  1. L L L:生成语言,0表示未生成,1表示中文生成,2表示英文生成。
  2. (T):是否翻译,0表示未翻译,1表示中文翻译,2表示英文翻译。
  3. (G):生成次数,表示生成的次数。
  4. (L):输出字数限制,0表示没有字数限制,1表示有字数限制。

将这些变量用一个矩阵 (Y) 表示,其中每一行代表一段文本。

Y = [ L 1 T 1 G 1 L 1 L 2 T 2 G 2 L 2 ⋮ ⋮ ⋮ ⋮ L N T N G N L N ] Y = \begin{bmatrix} L_1 & T_1 & G_1 & L_1 \\ L_2 & T_2 & G_2 & L_2 \\ \vdots & \vdots & \vdots & \vdots \\ L_N & T_N & G_N & L_N \end{bmatrix} Y= L1L2LNT1T2TNG1G2GNL1L2LN

步骤二:建立二元分类模型

使用Transformer进行二元分类提供一些更具体的数学公式解释。我们将主要关注Transformer的Self-Attention机制和二元分类的数学表达。

1. Transformer的Self-Attention机制

Self-Attention机制允许模型在处理输入序列时对不同位置的信息分配不同的权重。对于一个输入序列 X X X,经过Self-Attention的计算,我们可以得到新的表示 (Z),其中 Z i Z_i Zi 表示第 i i i 个位置的表示。Self-Attention的计算可以用以下公式表示:

Z i = ∑ j Attention ( X i , X j ) ⋅ X j Z_i = \sum_{j} \text{Attention}(X_i, X_j) \cdot X_j Zi=jAttention(Xi,Xj)Xj

其中, Attention ( X i , X j ) \text{Attention}(X_i, X_j) Attention(Xi,Xj)表示第 i i i 个位置和第 j j j 个位置之间的注意力权重。

2. 文本表示

对于文本段落的表示,我们可以使用Transformer的输出中的某一维度,通常是CLS标记的输出。表示为 C C C

C = Transformer ( X ) C = \text{Transformer}(X) C=Transformer(X)

3. 二元分类层

将文本表示输入二元分类层,其中 (W) 是权重,(b) 是偏置,(f) 是激活函数(通常是Sigmoid函数):

y ^ = f ( W ⋅ C + b ) \hat{y} = f(W \cdot C + b) y^=f(WC+b)

4. 损失函数

使用二元交叉熵损失函数:

Loss = − 1 N ∑ i = 1 N [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] \text{Loss} = -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \log(\hat{y}_i) + (1-y_i) \log(1-\hat{y}_i) \right] Loss=N1i=1N[yilog(y^i)+(1yi)log(1y^i)]

其中, N N N 是样本数量, y i y_i yi 是实际标签(0或1), y ^ i \hat{y}_i y^i 是模型的预测输出。

5. 训练过程

通过反向传播算法,优化模型参数以最小化损失函数。使用梯度下降算法或其他优化算法。

6. 推断过程

在推断过程中,将新的文本输入模型,得到输出概率。可以根据概率设定一个阈值,例如0.5,判断文本是由AI生成还是非AI生成。

这些数学公式提供了对问题二中使用Transformer进行二元分类任务的详细解释。在实践中,可以根据具体情况调整模型结构和超参数。

步骤三:训练模型

使用已有的数据集,包含标记好的文本段落和对应的变量值,对模型进行训练。在训练中,模型将学习不同变量对于文本生成的影响,从而能够判断一段文本是否由AI生成。

在实际应用中,基于Transformer的二元分类任务的代码通常使用深度学习框架,例如TensorFlow或PyTorch。由于代码的长度较长,这里提供一个简化版本的伪代码,展示了关键的步骤和概念。

这个伪代码使用PyTorch作为深度学习框架,同时使用Hugging Face的Transformers库以便快速使用预训练的Transformer模型。

import torch
import torch.nn as nn
from transformers import BertModel, BertTokenizer

# 定义Transformer模型
class TransformerClassifier(nn.Module):
    def __init__(self, hidden_size, num_classes):
        super(TransformerClassifier, self).__init__()
        self.transformer = BertModel.from_pretrained('bert-base-uncased')
        self.fc = nn.Linear(hidden_size, num_classes)
        self.sigmoid = nn.Sigmoid()

    def forward(self, input_ids, attention_mask):
        outputs = self.transformer(input_ids, attention_mask=attention_mask)
        cls_output = outputs.last_hidden_state[:, 0, :]
        logits = self.fc(cls_output)
        proba = self.sigmoid(logits)
        return proba

# 数据预处理
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
text = "This is a sample text."
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)

# 构建模型
hidden_size = 768  # BERT-base的隐藏层大小
num_classes = 1    # 二元分类
model = TransformerClassifier(hidden_size, num_classes)

# 模型输入
input_ids = inputs["input_ids"]
attention_mask = inputs["attention_mask"]

# 模型输出
output_proba = model(input_ids, attention_mask)

# 计算损失
criterion = nn.BCELoss()
target = torch.tensor([1.0])  # 实际标签
loss = criterion(output_proba, target)

# 反向传播与优化
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
optimizer.zero_grad()
loss.backward()
optimizer.step()

使用BERT模型进行文本表示,使用了Sigmoid激活函数和二元交叉熵损失函数进行二元分类。

步骤四:模型评估

使用另外的数据集对模型进行评估,检查模型的性能,包括准确率、召回率、精确率等指标。这些指标可以衡量模型在判断每一段文本生成情况上的表现。

import torch
from transformers import BertTokenizer

# 加载已训练的模型
model = TransformerClassifier(hidden_size, num_classes)
model.load_state_dict(torch.load('your_trained_model.pth'))  # 请替换为你实际的模型文件路径
model.eval()

# 数据预处理
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
text = "This is a new text for inference."
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)

# 模型输入
input_ids = inputs["input_ids"]
attention_mask = inputs["attention_mask"]

# 推断
with torch.no_grad():
    output_proba = model(input_ids, attention_mask)

# 输出概率
print("预测概率:", output_proba.item())

# 根据阈值进行分类
threshold = 0.5
prediction = 1 if output_proba.item() > threshold else 0
print("预测结果:", prediction)

推理代码加载了之前训练好的模型权重,并使用该模型对新的文本进行推断。

这个方法结合了机器学习的思想,通过学习不同变量对文本生成的影响,使得模型能够在给定输入变量的情况下判断文本是否由AI生成。

问题三

对于语言模型特征中的信息熵,以及统计验证、特征工程、文献网络分析和社交网络分析等方法。

1. 语言模型特征:

1.1 信息熵:

信息熵是用来度量一个随机变量不确定度的概念,可以应用于文本的信息量评估。

H ( X ) = − ∑ i = 1 n P ( x i ) log ⁡ 2 P ( x i ) H(X) = - \sum_{i=1}^{n} P(x_i) \log_2 P(x_i) H(X)=i=1nP(xi)log2P(xi)

其中, P ( x i ) P(x_i) P(xi) 是词汇表中第 i i i个词出现的概率。

2. 实验设计与验证:

2.1 统计验证:

在统计验证中,一个常见的做法是使用 t 检验。

t = X ˉ − μ s / n t = \frac{\bar{X} - \mu}{s/\sqrt{n}} t=s/n Xˉμ

其中, X ˉ \bar{X} Xˉ 是样本均值, μ \mu μ是总体均值, s s s 是样本标准差, n n n 是样本大小。

3. 技术细节:

3.1 特征工程:

使用 TF-IDF进行关键词权重计算。

TF-IDF ( t , d ) = TF ( t , d ) × IDF ( t ) \text{TF-IDF}(t, d) = \text{TF}(t, d) \times \text{IDF}(t) TF-IDF(t,d)=TF(t,d)×IDF(t)

其中,TF 表示词频,IDF 表示逆文档频率。

4. 引用和参考文献:

4.1 文献网络分析:

可以使用图论的相关指标,如节点度、中心性等。

centrality = 连接到节点的边数 总节点数 − 1 \text{centrality} = \frac{\text{连接到节点的边数}}{\text{总节点数}-1} centrality=总节点数1连接到节点的边数

5. 作者身份可疑:

5.1 社交网络分析:

使用社交网络中的中心性指标,例如介数中心性。

介数中心性 = ∑ s ≠ v ≠ t σ ( s , t ∣ v ) σ ( s , t ) \text{介数中心性} = \sum_{s \neq v \neq t} \frac{\sigma(s, t|v)}{\sigma(s, t)} 介数中心性=s=v=tσ(s,t)σ(s,tv)

其中, σ ( s , t ) \sigma(s, t) σ(s,t) 表示从节点 s s s 到节点 t t t 的最短路径数, σ ( s , t ∣ v ) \sigma(s, t|v) σ(s,tv) 表示通过节点 (v) 的最短路径数。

结合多个特征进行加权得分和二元分类判断:

class BinaryClassifier:
    def __init__(self, weights, threshold):
        self.weights = weights
        self.threshold = threshold

    def calculate_total_score(self, features):
        # 计算总得分
        total_score = sum(f * w for f, w in zip(features, self.weights))
        return total_score

    def classify(self, total_score):
        # 进行二元分类判断
        return "AI生成" if total_score > self.threshold else "人类创作"

# 示例特征和权重
example_features = [feature1, feature2, feature3]  # 请替换为实际特征的值
example_weights = [weight1, weight2, weight3]  # 请替换为实际权重的值

# 示例阈值
example_threshold = 0.5  # 请替换为实际阈值

# 创建二元分类器对象
classifier = BinaryClassifier(weights=example_weights, threshold=example_threshold)

# 计算总得分
total_score_example = classifier.calculate_total_score(example_features)

# 进行二元分类判断
classification_result = classifier.classify(total_score_example)

# 打印结果
print(f"总得分: {total_score_example}")
print(f"分类结果: {classification_result}")

问题四:

了解,建立一个综合的抄袭检测模型需要综合考虑文本、图像和公式等多个方面。以下是一个简化的框架,其中包括文本相似性、图像处理和公式匹配等不同模块:

文本相似性模块:

使用文本相似性度量方法,如余弦相似度,来比较文章中数学模型的文本描述。

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity

def calculate_text_similarity(text1, text2):
    vectorizer = CountVectorizer().fit_transform([text1, text2])
    vectors = vectorizer.toarray()
    similarity = cosine_similarity([vectors[0]], [vectors[1]])[0][0]
    return similarity

图像处理模块:

使用深度学习方法对图像进行特征提取,然后比较图像的相似性。

# 使用适当的深度学习库导入模型和相关功能
from tensorflow.keras.applications import VGG16
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.vgg16 import preprocess_input
from tensorflow.keras.models import Model
import numpy as np

def calculate_image_similarity(image_path1, image_path2):
    # 使用预训练的VGG16模型提取图像特征
    model = VGG16(weights='imagenet', include_top=False)
    img1 = image.load_img(image_path1, target_size=(224, 224))
    img2 = image.load_img(image_path2, target_size=(224, 224))
    img1 = image.img_to_array(img1)
    img2 = image.img_to_array(img2)
    img1 = preprocess_input(np.expand_dims(img1, axis=0))
    img2 = preprocess_input(np.expand_dims(img2, axis=0))
    features1 = model.predict(img1)
    features2 = model.predict(img2)

    # 使用余弦相似度计算特征向量的相似性
    similarity = cosine_similarity(features1.flatten().reshape(1, -1), features2.flatten().reshape(1, -1))[0][0]
    return similarity

公式匹配模块:

使用LaTeX解析器将公式解析成结构化的数据,然后比较两个公式的结构相似性。

# 使用适当的LaTeX解析库导入模型和相关功能
from sympy import Eq, latex, simplify, symbols
from sympy.parsing.latex import parse_latex

def calculate_formula_similarity(formula1, formula2):
    # 解析LaTeX公式
    expr1 = parse_latex(formula1)
    expr2 = parse_latex(formula2)

    # 简化表达式
    simplified_expr1 = simplify(expr1)
    simplified_expr2 = simplify(expr2)

    # 比较两个公式的相似性
    similarity = float(simplified_expr1.equals(simplified_expr2))
    return similarity

模型整合:

将以上三个模块整合为一个综合的抄袭检测模型:

class PlagiarismDetectionModel:
    def __init__(self, text_weight, image_weight, formula_weight):
        self.text_weight = text_weight
        self.image_weight = image_weight
        self.formula_weight = formula_weight

    def detect_plagiarism(self, text1, text2, image_path1, image_path2, formula1, formula2):
        # 计算各模块相似性
        text_similarity = calculate_text_similarity(text1, text2)
        image_similarity = calculate_image_similarity(image_path1, image_path2)
        formula_similarity = calculate_formula_similarity(formula1, formula2)

        # 综合得分
        total_score = self.text_weight * text_similarity + self.image_weight * image_similarity + self.formula_weight * formula_similarity

        # 返回结果
        return total_score

消融实验

消融实验是为了评估模型中各个组成部分的重要性,通常通过逐步移除某个组件并观察模型性能的变化来进行。在抄袭检测模型中,我们可以进行消融实验以评估文本、图像和公式模块对整体抄袭检测性能的贡献。

以下是一个简单的消融实验示例,假设我们有一个包含文本、图像和公式的抄袭检测模型,我们分别对这三个模块进行消融实验:

class AblationExperiment:
    def __init__(self, model):
        self.model = model

    def text_ablation(self, text1, text2, image_path1, image_path2, formula1, formula2):
        # 移除文本模块
        self.model.text_weight = 0
        total_score = self.model.detect_plagiarism(text1, text2, image_path1, image_path2, formula1, formula2)
        return total_score

    def image_ablation(self, text1, text2, image_path1, image_path2, formula1, formula2):
        # 移除图像模块
        self.model.image_weight = 0
        total_score = self.model.detect_plagiarism(text1, text2, image_path1, image_path2, formula1, formula2)
        return total_score

    def formula_ablation(self, text1, text2, image_path1, image_path2, formula1, formula2):
        # 移除公式模块
        self.model.formula_weight = 0
        total_score = self.model.detect_plagiarism(text1, text2, image_path1, image_path2, formula1, formula2)
        return total_score

在这个示例中,我们创建了一个AblationExperiment类,该类允许我们分别移除文本、图像和公式模块,然后检查模型性能的变化。

plagiarism_model = PlagiarismDetectionModel(text_weight=0.5, image_weight=0.3, formula_weight=0.2)
experiment = AblationExperiment(plagiarism_model)

# 示例文本、图像和公式
example_text1 = ""
example_text2 = ""
example_image_path1 = "path/to/image1.jpg"
example_image_path2 = "path/to/image2.jpg"
example_formula1 = "a = b + c"
example_formula2 = "x = y * z"

# 消融实验:移除文本模块
text_ablation_score = experiment.text_ablation(example_text1, example_text2, example_image_path1, example_image_path2, example_formula1, example_formula2)

# 消融实验:移除图像模块
image_ablation_score = experiment.image_ablation(example_text1, example_text2, example_image_path1, example_image_path2, example_formula1, example_formula2)

# 消融实验:移除公式模块
formula_ablation_score = experiment.formula_ablation(example_text1, example_text2, example_image_path1, example_image_path2, example_formula1, example_formula2)

# 打印结果
print(f"移除文本模块后得分: {text_ablation_score}")
print(f"移除图像模块后得分: {image_ablation_score}")
print(f"移除公式模块后得分: {formula_ablation_score}")

2023 年 数维杯(C题) CS数模 国际大学生数学建模挑战赛 全解全析

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

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

相关文章

yolo增加Inner-IoU,一文搞定(Inner-SIoU,Inner-WIoU,Inner-EIoU,Inner-MPDIoU)

论文&#xff1a;https://arxiv.org/pdf/2311.02877.pdf 简介 随着检测器的迅速发展, 边框回归取得了巨大的进步。然而&#xff0c;现有的基于 IoU 的边框回归仍聚焦在通过加入新的损失项来加速收敛&#xff0c;忽视 IoU 损失项其自身的限制。尽管理论上 IoU 损失能够有效描述…

基于IDEA 进行Maven依赖管理

1. 依赖管理概念 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题&#xff0c;使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中&#xff0c;避免出现版本冲突和依赖缺失等…

Davinci Developer Classic SWC新建port并连接非complete port方式

环境 在automic SWC新建port 在父SWC的port view里面找到对应的信号&#xff0c;有件选择创建连接到SWC上 <完>

FLMix: 联邦学习新范式——局部和全局的结合

文章链接&#xff1a;Federated Learning of a Mixture of Global and Local Models 发表期刊&#xff08;会议&#xff09;: ICLR 2021 Conference&#xff08;机器学习顶会&#xff09; 目录 1. 背景介绍2. 传统联邦学习3. FL新范式理论逻辑重要假设解的特性 本博客从优化函…

简单介绍二分类问题评价指标

正确率(Accuracy) Accuracy ​(TP TN)/(TP TN FP FN)精准率(Precision) 记忆&#xff1a;在识别出某标签中正确的比例&#xff1b; 比如识别为某标签的一共有105个&#xff0c;其中有95个是识别对的&#xff0c;那Precision就是95/105&#xff1b; TP/(TPFP)召回率(Recall…

【汇编】内存中字的存储、用DS和[address]实现字的传送、DS与数据段

文章目录 前言一、内存中字的存储1.1 8086cpu字的概念1.2 16位的字存储在一个16位的寄存器中&#xff0c;如何存储&#xff1f;1.3 字单元 二、用DS和[address]实现字的传送2.1 字的传送是什么意思&#xff1f;2.2 要求原理解决方案&#xff1a;DS和[address]配合8086传送16字节…

OpenCV入门6——图像基本变换

文章目录 图像的放大与缩小缩放算法放大 图像的翻转图像的旋转仿射变换之图像平移仿射变换之获取变换矩阵仿射变换之变换矩阵之二OpenCV透视变换 图像的放大与缩小 缩放算法 # -*- coding: utf-8 -*- import cv2 import numpy as npimg cv2.imread(E://pic//4.jpg) # (600, 48…

前端学习笔记--TypeScript

1. typescript是什么 Typescript是由微软开发的一款开源的编程语言Typescript是Javascript的超集&#xff0c;遵循最新的ES5/ES6规范。TypeScript扩展了Javascript语法TypeScript更像后端Java、C#这样的面向对象语言可以让JS开发大型企业应用越来越多的项目是基于TS的&#xf…

深入理解TensorFlow:计算图的重要性与应用

TensorFlow是一个流行而强大的机器学习框架&#xff0c;其核心概念之一是计算图&#xff08;computation graph&#xff09;。计算图在TensorFlow中扮演着重要角色&#xff0c;作为一种数据流图表示形式&#xff0c;它能够将计算的过程可视化&#xff0c;同时方便优化、分布式计…

2023.11.16使用原生js和canvas实现图片矩形框标注功能

2023.11.16使用原生js和canvas实现图片矩形框标注功能 做训练的时候需要一些数据集&#xff0c;但是网上数据集有时不能满足自身的使用需求&#xff0c;自己编制一个标注软件实现数据采集功能。 记录的数据集可以传入后端&#xff0c;在后端再次进行处理。 <!DOCTYPE htm…

Linux - 用户级缓冲区和系统缓冲区 - 初步理解Linux当中文件系统

前言 文件系统 我们先来看两个例子&#xff1a; 这个程序输出&#xff1a; 此时的输出也满足的我们预期。 我们也可以把 程序执行结果&#xff0c;输出重定向到 一个文件当中: 当我们在代码的结尾处&#xff0c;创建了子进程&#xff0c;那么输出应该还是和上述是一样的&…

C# 实时监控双门双向门禁控制板源码

本示例使用设备&#xff1a;实时网络双门双向门禁控制板可二次编程控制网络继电器远程开关-淘宝网 (taobao.com) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.…

数据库实验报告(六)

实验报告&#xff08;六&#xff09; 1、实验目的 &#xff08;1&#xff09; 掌握关联查询的用法 &#xff08;2&#xff09; 掌握集合查询的区别和用法 &#xff08;3&#xff09; 掌握EXISTS的用法 2、实验预习与准备 &#xff08;1&#xff09; 了解ANY&…

在docker中部署MySQL

目录 1、拉取最新的镜像 2、创建mysql容器实例 3、启动mysql实例 4、进入mysql 交互环境 5、登录MySQL数据库 6、尽情享用mysql 1、拉取最新的镜像 docker image pull mysql 2、创建mysql容器实例 第一次执行&#xff0c;需要先创建容器并启动&#xff08;容器名是mys…

分享一个自用的Win11护眼主题(无需下载)

先放上几张效果图 设置方法 首先&#xff0c;把主题设置为高对比度主题——沙漠。 然后点击编辑&#xff0c;依次设置为以下值 背景&#xff1a;#1C5E75文本&#xff1a;#FFF5E3超链接&#xff1a;#6EFFA4非活动文本&#xff1a;#FFF5E3选定文本&#xff1a;#903909、#8EE3F0…

巾帼调查队开展实务调查技能,促全职妈妈联增收

2024年11月14日上午&#xff0c;由罗湖区妇联主办、罗湖区懿米阳光公益发展中心承办的“巾帼调查队—社区女性增值计划”项目第三期活动在罗湖区妇儿大厦六楼成功举办&#xff0c;30名阳光妈妈及全职妈妈参与了此次调查实务技巧培训。 在培训开始之前&#xff0c;巾帼调查队的创…

深度探讨丨关于工作量证明的常见误解

有一种基本误解认为&#xff0c;工作量证明机制在本质上是不可扩展的&#xff0c;并且会产生过度的能源耗费。 按照工作量证明区块链的最初设计&#xff0c;以及BSV区块链协会的推广&#xff0c;这一技术旨在实现可扩容性&#xff0c;同时确保高效能系统内的安全性和互操作性。…

基于IDEA进行Maven工程构建

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 1. 构建概念和构建过程 项目构建是指将源代码、依赖库和资源文件等转换成可执行或可部署的应用程序的过程&#xff0c;在这个过程中包括编译源代码、链接依赖库、打包和部署等多个步骤。 项目构建是软件开发过程中…

【智能家居】5、主流程设计以及外设框架编写

一、主流程设计 #include <stdio.h>int main(){//指令工厂初始化//控制外设工厂初始化//线程池return 0; } 1、工厂模式结构体定义 &#xff08;1&#xff09;指令工厂 inputCmd.h struct InputCmd{char cmdName[128];//指令名称char cmd[32];//指令int (*Init)(char …

解决margin-top导致的塌陷

什么是margin-top塌陷 若要使子元素距离父元素顶部有一定距离&#xff0c;如果只给子元素设置margin-top属性&#xff0c;结果发现父元素顶部出现位移&#xff0c;子元素相对父元素没位移&#xff0c;这就是margin-top导致的塌陷。 .fatherplus{width: 600px;height: 600px;b…