- 博客(57)
- 收藏
- 关注
原创 优雅的开始一个Python项目
这是我在初始化一个Python项目时,一键生成的项目文件。它自动完成了git初始化、环境管理、日志模块这三件事情,并在最后进入了虚拟环境。
2025-03-27 09:23:40
365
原创 【万字长文】DeepSeek关键技术整理
迭代速度显著快于其他厂商。从2024年1月到2025年1月,12个月发布15个模型。全栈式的技术布局。不同模型涉及不同的任务类型。涵盖了自然语言处理、代码生成、数学推理、多模态等领域。技术突破涵盖了基座模型全流程。包括大模型理论研究、架构创新、训练优化、多模态整合极致成本压缩。通过自制训练框架、减少激活参数、硬件适配、新的微调方法等手段,大幅减少了大模型等成本。
2025-03-03 11:02:43
891
原创 python如何解析word文件格式(.docx)
具体的标记用法参考OOXML标准,你可以在下图画红框的地方查找(仅适用于Microsoft Word)。,他是我们操作word文件的主角(有些高级功能不在其中,比如批注在另外的xml中)。的标记由架构或文档的作者定义,并且是无限制的。如果你没有接触过的话,我建议百度一下,有助于理解下面的内容。所以我们从开源的标准入手,用python实现操作word文件的功能。本文言尽于此,后面我会再把python的源码开放出来。解压后的word文件漏出了他的真实面目。注意看上面xml的第一行,的标记是预先定义好的,
2025-01-17 10:30:05
1627
原创 langchain调用llm模型
为了保护api,一般将api信息写在单独的环境变量文件.env中。在封装llm时使用,它会自动读取项目下的.env(确保项目下有.env),并将其转换为环境变量。封装llm api比较简单,别忘了初始化的时候测试一下连接。str。
2024-12-31 09:03:11
234
原创 使⽤MATLAB进⾏⽬标检测
这部分是本⽂的重点,但是却很短,因为MATLAB的流程太简洁了,狠狠爱了。% 优化器% 梯度衰减因⼦% 平⽅梯度衰减因⼦% 初始学习率% 学习率衰减策略% 批⼤⼩% L2正则化% 迭代轮数第⼆步,设置yolov4的Anchors% 如果你选择了从头开始训练,那么就得定义⼀⼤堆参数% 开始训练% 保存% 模型% 训练过程* defect正在使⽤ 'Processes' 配置⽂件启动并⾏池(parpool)...已连接到具有 8 个⼯作进程的并⾏池。
2024-11-14 18:56:38
1183
原创 大语言模型RAG-将本地大模型封装为langchain的chat model(三)
这个类就是本地llm的langchain封装,需要定义以下方法或属性。这是后面构建RAG应用的基础。模型为例,演示最基础使用方法。还在0.1时代,这期使用的。已经与之前不兼容了。
2024-06-05 10:36:36
940
原创 时序数据预处理
对于数据科学来说,凡事“预”则立,不“预”则废。数据的质量直接决定数据挖掘的结果。本文基于pandas和sklearn给出示例。偏重实际应用场景,省略数学原理。
2024-03-26 15:39:56
1884
原创 大语言模型RAG-langchain models (二)
嵌入模型的思路是将字符串组成的空间映射到嵌入空间,这个嵌入空间是一个连续向量空间,且嵌入空间与原本的字符空间是同构的。的方法,以便语言模型能与文档交互。这里的文档一般是指非结构化的文档,如文本文档,PDF等等。一般是大模型供应商提供的大语言模型,langchain为不同的模型作了接口。不同的聊天模型怎么使用建议直接看源码,源码的注释可以说是非常友好了。是聊天模型,虽然它是llm的包装,但它的接口基于消息而不是文本。的输入,所以根据语言模型的不同,提示词工程也有不同的构造方法。的接口,是所有应用的核心。
2024-03-14 10:20:02
1568
原创 大语言模型RAG-技术概览 (一)
即大模型在回答问题或生成问题时会先从大量的文档中检索相关的信息,然后基于这些信息进行回答。的概念了:它是LLM应用的一种方法,允许模型按照一定顺序逐步处理信息或任务,将前一步的输出作为下一步的输入。举个例子:GPT的知识停留在模型训练完成的那一刻(2021年),但上层应用不得不使用新鲜的数据。Chain强大且灵活,但缺点也不能忽视:首先长链可能需要更多的计算资源,其次是容错率很低,中间步骤的错误可能会影响后续计算。(对检索到的本地知识排序、总结、融合等,在上图箭头7或11、12的位置)。
2024-03-12 14:33:35
1205
原创 在langchain-ChatGLM项目中引入ChatGLM3-6b-128k
【代码】在langchain-ChatGLM项目中引入ChatGLM3-6b-128k。
2024-03-04 10:59:59
1110
原创 Dash+Plotly | Web应用开发(1)
本文为https://github.com/CNFeffery/DataScienceStudyNotes的学习笔记,部分源码来源于此仓库。本期内容主要为和。
2024-01-05 17:23:58
1593
原创 DBC转excel(python语言)
与同类工具的不同点:能批量转换在同一文件夹下的所有DBC,省时省力。重复造轮子,只是为了熟悉一下DBC格式。
2023-07-17 11:40:07
2534
原创 YOLOX官方源码文件结构和注释
Yolox的论文及代码Yolox论文名:《YOLOX: Exceeding YOLO Series in 2021》Yolox论文地址:https://arxiv.org/abs/2107.08430Yolox代码地址:https://github.com/Megvii-BaseDetection/YOLOX源码的文件结构和注释(加粗部分是重点文件,应详细分析):YOLOX-main:.│ .gitignore│ .readthedocs.yaml│ hubconf.py│ L.
2022-04-17 14:44:13
5801
原创 C++基础语法(二)
C++基础语法(二)文章目录C++基础语法(二)数组函数指针数组#include<iostream>using namespace std;/*数组数组中每个数据元素都是相同的数据类型数组是由连续的内存位置组成的1.一维数组的定义方式: 1) 数据类型 数组名[ 数组长度 ]; 2) 数据类型 数组名[ 数组长度 ] = { 值1,值2 ...}; 3) 数据类型 数组名[ ] = { 值1,值2 ...};2.二维数组的定义方式:
2022-01-30 19:34:14
743
原创 C++基础语法(一)
C++基础(一)文章目录C++基础(一)Hello World变量数据类型数据的输入运算符判断条件循环结构Hello World# include<iostream>using namespace std;/*第一个cpp程序,Hello World*/int main(){ // 输出字符串Hello World cout << "Hello World" << endl; system("pause"); re
2022-01-25 11:22:16
823
原创 论文写作方法
SCI写作文章目录SCI写作文章为谁写,如何评价文章**1.1 评价文章的依据****1.2 什么是好文章**如何写好文章的各个部分**2.1 Introduction 引言**2.2 Materials & Methods, or Experimental Section 实验、理论或模拟方法2.3 Results 结果2.4 Discussion 讨论2.5 Conclusion 结论2.6 References 参考文献2.7 Abstract 摘要2.8 Title 题目甘阳老师对于写作的
2022-01-01 22:10:37
843
原创 2021年华为杯数模赛D题总结
2021年华为杯数模赛D题总结题目:题目太长(网上能找到完整题目),背景信息略过,这里把题目抽象一下:已有条件:给出了1974个训练样本和50个测试样本,每个样本有729个特征每个训练样本有7个标签,分别是IC50值、pIC50值、和ADMET性质(包含5个标签)IC50值、pIC50值是两个相关的连续变量。pIC50是IC50的负对数ADMET性质的五个变标签都是布尔值问题:根据特征对IC50值和pIC50值影响的重要性进行排序,并给出前20个对IC50值和pIC50值最具有显著
2021-10-19 16:27:21
6755
11
原创 统计学习方法(三) 朴素贝叶斯(naive Bayes)上
统计学习方法(三) 朴素贝叶斯(naive Bayes)朴素贝叶斯是一个基于贝叶斯定理与特征条件独立假设的分类方法。三门问题不想搞的太枯燥,所以用大名鼎鼎的“三门问题”引入贝叶斯定理(这个问题真是太有意思了):三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let’s Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇
2021-09-27 21:17:24
378
1
原创 统计学习方法(二) K近邻(KNN)
第一节的感知机使用了一种做辅助超平面的方式来分类,K近邻也可以分类(可以回归,但不讨论),而且从数学思想上更加直观:简单来说就是预测样本距离哪个类别最近就分为哪一类。相比感知机,K近邻天然具有多分类的能力。另外,K近邻没有明显的“学习”过程。算法最主要的是如何设置距离的度量和分类决策规则。(说白了就是怎么算距离,算好了又怎么确定类别)原书中对于K近邻是这样说的:K近邻法的输入为示例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类。K近邻罚假设给定一个训练数据集,其中的实例类别已定。分类时对
2021-09-09 21:45:21
312
2
原创 机器学习中的距离度量(python实现)
最近读《统计学习方法》的时候用到了各种距离,这里做一个小总结,并且用numpy实现一下。一般的距离度量使用欧氏距离,就是我们生活中最常用的距离概念。但也可以使用其他的度量方式。这个部分比较有意思,后期的算法也能参考,所以详细记录一下。闵可夫斯基距离(LpL_pLp距离)(Minkowski distance)闵可夫斯基距离也叫LpL_pLp距离,欧式距离是LpL_pLp距离的一种特殊情况。在这里p>=1p>=1p>=1当p=2p=2p=2时,称为欧氏距离(Eu
2021-09-09 17:12:54
1071
1
原创 统计学习方法(一) 感知机(Perceptron)
感知机是二分类的线性分类模型,属于非概率模型,判别模型。是神经网络和支持向量机的基础。一、感知机模型如上图,我们如果能用一条直线将两类不同的样本区分开,那么再拿到一个新的样本,我们就可以根据这条直线的位置将新样本分类。因此我们的目标就是找到这样的一条线(w⋅x+b)(w{\cdot}x+b)(w⋅x+b),那么用f(x)=sign(w⋅x+b)f(x)=sign(w{\cdot}x+b)f(x)=sign(w⋅x+b)就可以实现分类的目的。当然,这里说的是二维的情况。拓展到三维,这条线就变成了一个
2021-09-04 21:37:20
409
2
原创 【pytorch】定义自己的CNN字符识别网络
1.选定网络结构自定义的网络结构很大程度上决定于数据集的特点。这次字符识别数据集为20*20的3通道图片,是中国汽车牌照图片经过预处理后的字符图片。包含包括数字、字母和汉字在内的65类字符。数据分布差异较大,一般来讲这样会出现数据项较少的类难以正确识别,这里我们先不管数据分布的问题,等网络效果不好时再调整。数据项示例和数据分布如以下两张图。每个数据项信息较少,可使用较为简单的网络。因此定义网络如下:input -> 3*3卷积 -> BN -> LeakyReLU -> D
2021-08-21 23:15:03
791
原创 【pytorch】定义自己的dataloader
在使用自己数据集训练网络时,往往需要定义自己的dataloader。这里用最简单的例子做个记录。定义datalaoder一般将dataloader封装为一个类,这个类继承自torch.utils.data.datasetfrom torch.utils.data import datasetclass LoadData(dataset.Dataset): # 注意父类的名称,不能写dataset pass需要注意的是dataset是模块名,而Dataset是类名,在python中模块
2021-08-13 15:33:46
4024
1
原创 汉诺塔问题的思考
汉诺塔问题是一个经典的递归问题,具体描述请点这里。在已知汉诺塔问题是递归问题的基础上,我们套用递归三定律来解决它:问题的最小规模。最小规模就是两层的汉诺塔。这很好解决。将盘1从柱1移到柱2,将盘2从柱1移到柱3,将盘1从柱2移到柱3,完成。大规模问题向小规模问题演化。三层汉诺塔可以将上面的两个盘子看做一层,这样就变成了两层汉诺塔;四层汉诺塔可以将上面的三个盘子看做一层,这样就变成了两层汉诺塔……不断调用自身通过这个思路,其实不难写出解决这个问题的Python程序def moveTower
2021-06-20 22:15:53
586
原创 数据结构与算法 Python(5)
递归Recursion递归是一种解决问题的方法精髓在于:将问题分解为规模更小的相同问题持续分解,直到问题规模小到可以用非常简单直接的方式来解决递归的明显特征就是调用自身精妙的递归算法常会出奇简单,令人赞叹实例1:列表求和给定一个不确定长度的整数列表,返回所有数的和既不能用for,也不能用while,是否能对这个列表求和?这个求和过程实际上是由一次次的加法实现的,而加法有两个操作数,这个是确定的同样是求和问题,但规模发生了变化,符合递归解决问题的特征因此可将求和问题归纳成这样:首
2021-06-19 16:11:32
127
原创 数据结构与算法 Python (4)
队列Queue队列是一种有次序的数据集合,其特征是:新数据项的添加总发生在一端(通常称为“尾端rear”)现存数据项的移除总发生在另一端(通常称为“首端”front)队列中入口和出口分别只有一个,不允许数据项直接插入队中,也不允许从队列中间移除数据项数据项加入队列时首先出现在队尾,随着队首数据项的移除,它逐渐靠近队首。这种次序安排的原则称为FIFO(first-in first-out)先进先出用Python中的List实现:class queue(): ''' ADT
2021-06-18 21:48:41
157
原创 数据结构与算法 Python(3)
数据结构与算法 Python (3)线性结构线性结构是一种有序数据项的集合,其中每个数据项都有唯一的前驱和后继(首尾项没有前驱或后继)。有的线性结构允许从两端添加或移除,有的只允许从一端添加或移除四种常用的线性结构有:栈stack、队列queue、双端队列deque、列表list1. 栈Stack栈是一种有次序的数据项集合,数据项的加入和移除都仅发生在同一端,这一端叫做栈顶(top),另一端叫做栈底(base)。距离栈底越近的数据项留在栈中的时间越长,这种次序通常称为LIFO(L
2021-06-15 13:41:58
308
4
原创 数据结构与算法 Python (2)
数据结构与算法 Python (2)以变位词判断问题例 分析时间复杂度问题描述:变位词是指两个词之间存在组成字母的重新排列关系。比如heart和earth,python和typhon。解题目标:写一个bool函数,以两个词作为参数,返回这两个词是否为变位词。解法一:逐字检查将词1中的字符逐个到词2中检查是否存在。如果每个字符都能找到,则两个词就是变位词。只要有一个字符找不到,就不是变位词。def anagramSolution1(s1,s2): alist = list(s2
2021-06-03 22:20:19
360
2
原创 数据结构与算法 Python (1)
数据结构与算法 Python1. 求解问题的计算之道自古以来人类在各个方面都会遇到许多未知的事物。比如螃蟹能不能吃,什么是无理数,为什么云不会掉下来,怎样实现公平正义。* 总而言之,**这些问题都可以归纳为what,why,how的问题。**在这些问题中,有些我们已经解决,有些还未解决,有些无法解决。为了解决这些问题,我们也运用了很多手段和方法。比如直观感觉,占卜,计算,模拟仿真…等等。最终我们发现,利用数学方法解决问题是非常准确高效的。因为数学本身符号表达准确严谨,并且推理系统非常严密。虽然数学不是
2021-06-01 22:30:20
234
1
原创 数学建模笔记——灰色关联分析
灰色关联分析是什么灰色关联分析同层次分析法和TOPSIS法一样,可以用来进行系统分析的方法。但与其他方法不同的是灰色关联分析对样本数量要求不高,计算量较小,且不会出现量化结果与定性分析结果不符的情况。灰色关联分析的基本思想是根据序列曲线集合形状的相似程度来判断其联系是否紧密。曲线越接近,相应序列之间的关联度就越大,反之则越小。灰色关联分析怎么用应用1 进行系统分析第一步:画统计图根据统计图可得以下结论:四个变量均呈上升趋势第二产业的增幅较为明显第二产业和第三产业的差距在后三年相差更大
2021-04-22 16:29:11
35834
12
原创 将yolov3的标签转化为yolov5格式的标签
一般yolov3的数据集标签格式为xml,其中bbox为xyxy格式如图:但是yolov5所需的格式为txt每行一个obj,第一个字段是name,后面4个字段是normalized xywh格式的bbox。如下图:为了能用yolov3的数据训练yolov5,所以需要一个转格式的代码:# 将xml格式的标签转换为txt格式,并且将bbox的格式由xyxy转换为normalized xywh的格式。import os import xml.etree.ElementTree as ETcl
2021-03-02 21:33:25
3220
1
原创 Pyorch基础(三)
Pyorch基础(三)broadcasting(广播机制)broadcasting是把tensor自动扩张,比如在不同维度的tensor相加的时候,就会先利用broadcasting机制将两个tensor扩充为相同维度,再进行相加。合并与分割cat将多个tensor按指定维度进行合并合并的维度可以不同,但其他维度必须相同a = torch.rand(4,32,8)b = torch.rand(5,32,8)c = torch.cat([a,b],dim=0)print(c.sha
2021-01-31 17:19:12
270
1
原创 Pytorch基础(二)Tensor的索引和切片
Pytorch基础(二)Tensor的索引和切片Tensor的index和select**Dim 0 first:**多维张量的索引默认为第一个维度索引a = torch.Tensor(4, 3, 28, 28)print(a[0].shape) # torch.Size([3,28,28])print(a[0,0].shape) # troch.Size([28,28])选择前N个或后N个:代表全部n:代表从第n个到最后(包括第n个):n代表从第一个到第n个(不包括第n个)
2021-01-31 12:58:32
1927
原创 Pytorch基础(一)数据类型和创建数据
Pytorch基础(一)数据类型和创建数据数据类型Pytorch中的数据类型主要是tensor:这种数据类型与python解释器本身数据类型可以对应。但str类型有所不同。一般用一下几种方式表示字符串:One-hotEmbeddingWord2vecglove在python解释器中,数据无论在cpu还是gpu数据类型是相同的。但在pytorch中cpu和gpu中的数据有所不同:类型检验:a = torch.randn(2, 3)# 输出a的类型# 法1print
2021-01-30 11:24:11
761
1
原创 Pytorch构建神经网络学习总结(一)
Pytorch构建神经网络学习总结二维卷积后维度的计算Pytorch中一个mini batch的格式为 (batch size * input channals * input high * input width)设输入为N∗Cin∗Hin∗WinN*C_{in}*H_{in}*W_{in}N∗Cin∗Hin∗Win,一次二维卷积后输出为N∗Cout∗Hout∗WoutN*C_{out}*H_{out}*W_{out}N∗Cout∗Hout∗WoutNNN卷积前后保持不变(batch
2021-01-25 16:49:28
445
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人