llm前置知识-RNN
循环神经网络(Rerrent Neural Network, RNN) **是神经网络的一种,****RNN 对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,**利用了 RNN 的这种能力,使深度学习模型在解决语音识别、语言模型、机器翻译以及时序分析等 NLP 领域的问题时有所突破。 A. 挖掘“时序信息” (Mining Temporal Information)这指的是 RNN 处理数据****顺序的能力。传统的神经网络(如全连接网络)在处理输入时,通常不考虑元素的顺序。例如,对于句子“我打你”和“你打我”,传统网络可能会得到相似的表示,因为它忽略了词序。 RNN 通过其独特的****循环结构解决了这个问题: 链式处理:RNN 像人阅读一样,一个词一个词地处理序列。隐藏状态(记忆):RNN 的核心是一个“隐藏状态”(Hidden State),可以看作是网络的记忆。在处理序列的每一步,RNN 都会将当前的输入信息和上一步的记忆结合起来,形成新的记忆,然后传递给下一步 。 简单来说,当 RNN 处理到“你”这个词时,它的记忆里已经包含了“我”和“打”的信...
llm神经网络深度学习
下面来讨论一下隐藏层的节点数设计。在设计一个神经网络时,输入层的节点数需要与特征的维度匹配,输出层的节点数要与目标的维度匹配。而中间层的节点数,却是由设计者指定的。因此,“自由”把握在设计者的手中。但是,节点数设置的多少,却会影响到整个模型的效果。如何决定这个自由层的节点数呢?目前业界没有完善的理论来指导这个决策。一般是根据经验来设置。较好的方法就是预先设定几个可选值,通过切换这几个值来看整个模型的预测效果,选择效果最好的值作为最终选择。这种方法又叫做 Grid Search(网格搜索)。 ** 了解了两层神经网络的结构以后,我们就可以看懂其它类似的结构图。例如 EasyPR 字符识别网络架构(下图)。** 下面简单介绍一下两层神经网络的训练。 ** 在 Rosenblat 提出的感知器模型中,模型中的参数可以被训练,但是使用的方法较为简单,并没有使用目前机器学习中通用的方法,这导致其扩展性与适用性非常有限。从两层神经网络开始,神经网络的研究人员开始使用机器学习相关的技术进行神经网络的训练。例如用大量的数据(1000-10000 左右),使用算法进行优化等等,从而使得模型训练...
llm-神经网络
由于实习等一系列事情,leetcode 更新暂时延缓,只保留每日刷一道题,知识点学习暂且搁置 下面是 llm 前置知识,在这部分结束后,我将更新经典论文阅读。 神经网络: 让我们来看一个经典的神经网络。这是一个包含三个层次的神经网络。红色的是****输入层,绿色的是输出层,紫色的是中间层(也叫隐藏层)。输入层有 3 个输入单元,隐藏层有 4 个单元,输出层有 2 个单元。 在开始介绍前,有一些知识可以先记在心里: 设计一个神经网络时,输入层与输出层的节点数往往是固定的,中间层则可以自由指定; 神经网络结构图中的拓扑与箭头代表着****预测过程时数据的流向,跟训练时的数据流有一定的区别; 结构图里的关键不是圆圈(代表“神经元”),而是连接线(代表“神经元”之间的连接)。每个连接线对应一个不同的****权重(其值称为权值),这是需要训练得到的。 除了从左到右的形式表达的结构图,还有一种常见的表达形式是从下到上来表示一个神经网络。这时候,输入层在图的最下方。输出层则在图的最上方,如下图: 神经元模型是一个包含输入,输出与计算功能的模型。输入可以类比为神经元的树突,而输出可以类比...
芯片验证(一)
芯片验证是确保芯片设计正确性的关键环节。随着芯片复杂度的不断提升,验证工作在整个设计流程中所占比重越来越大,已成为芯片成功与否的决定性因素。这一讲我们将从基础概念入手,系统介绍验证的重要性、基本流程与方法、验证层次和评估指标,探讨实际项目流程中可能遇到的挑战与敏捷验证的应对思路,分析当前验证领域面临的困境以及使用高级语言进行验证的价值,并展望芯片验证众包这一未来解决方案。 接下来,你将了解: 芯片验证的基本概念:什么是芯片验证,为什么它对芯片设计至关重要,以及验证不足可能导致的严重后果。 验证流程与敏捷方法:完整的验证流程是如何开展的,敏捷验证的原则与实践,以及从计划到报告的完整验证步骤。 验证层次体系:从单元测试到系统测试的不同验证层次及其特点。 验证质量评估:如何通过功能正确性、代码/功能覆盖率、缺陷密度等关键指标来评估验证质量。 当前验证挑战与高级语言价值:验证面临的工作量、成本、人才等挑战,以及使用高级语言(如 Python)的优势及其对验证的推动作用。 芯片验证众包前景:作为应对挑战的创新方案,众包验证的可行性、技术路线,以及 Picker 等工具在其中的作...
eoh环境配置
by zjn 1.克隆一下源码 1git clone https://github.com/FeiLiu36/EOH/ 2.进入源码目录,创建虚拟环境 我家里的电脑没有装conda,所以我用的是Python自带的venv,如果你有conda,可以用conda创建虚拟环境。 1python -m venv eoh_env 然后激活虚拟环境: 1source eoh_env/Scripts/activate 记得虚拟环境的Python版本要>3.10 可以确定一下: 1python --version 3.安装依赖 12#基础依赖pip install numpy numba joblib 在这个目录下,直接 1pip install -r requirements.txt 也可以 4.配置llm参数 按照官网的指示,我选择了 示例1:旅行商问题的构造算法123cd examples/tsp_constructpython runEoH.py 但是需要先去买api DeepSeek 开放平台 在runEoH里面改一下参数 理论上就可以跑 但是,可能会遇到ti...
EoH文章阅读
源码及文章:EoH/README_CN.md at main · FeiLiu36/EoH Evolution of Heuristic 启发式进化: Evolutionary Computation 进化计算: Automatic Heuristic Design 自动启发式设计 EoH 将自然语言中的启发式思维转化为可执行代码,通过优化搜索框架对思维与代码的持续演化,显著提升了高性能启发式算法的生成效率。 创新点: 双重演进:EoH 利用 LLM 不仅演进代码,更重要的是它还演进“思想”。LLM 首先根据现有的优秀启发式(包含思想和代码),生成一个改进的或全新的“思想” 。 思想指导代码:随后,LLM 再将这个新生成的“思想”作为指导,翻译成具体的“代码” 。 提示策略 (Prompt Strategies):整个演进过程并非盲目进行,而是由一系列精心设计的提示策略来引导,分为两大类:探索(Exploration: E1, E2)和修改(Modification: M1, M2, M3),以确保生成更多样化和更有效的启发式算法 。 通过构建 though...
链表双指针0808
3.0019. 删除链表的倒数第 N 个结点3.1 题目大意描述:给定一个链表的头节点 head。 要求:删除链表的倒数第 n 个节点,并且返回链表的头节点。 说明: 要求使用一次遍历实现。 **链表中结点的数目为 **sz。 示例: 123456 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 输入:head = [1], n = 1 输出:[] 题解: 123456789101112131415161718192021 class Solution: def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]: slow, fast = head, head # fast 先走 n 步 for _ in range(n): fast = fast.next # 如果 fast 走到 Non...
链表排序0807
2.0021. 合并两个有序链表2.1 题目大意描述:给定两个升序链表的头节点 list1 和 list2。 要求:将其合并为一个升序链表。 说明: 两个链表的节点数目范围是 。 list1 和 list2 均按 非递减顺序 排列 示例: 123456 输入:list1 = [1,2,4], list2 = [1,3,4] 输出:[1,1,2,3,4,4] 输入:list1 = [], list2 = [] 输出:[] 题解: 123456789101112131415161718192021222324252627282930 # Definition for singly-linked list. class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class Solution: def mergeTwoLists(self, list1: Optional[ListNode], list2:...
链表排序0806
1. 链表排序简介在数组排序中,常见的排序算法有:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序等。 **而对于链表排序而言,因为链表不支持随机访问,访问链表后面的节点只能依靠 **next 指针从头部顺序遍历,所以相对于数组排序问题来说,链表排序问题会更加复杂一点。 下面先来总结一下适合链表排序与不适合链表排序的算法: **适合链表的排序算法:**冒泡排序、选择排序、插入排序、归并排序、快速排序、计数排序、桶排序、基数排序。 **不适合链表的排序算法:**希尔排序。 **可以用于链表排序但不建议使用的排序算法:**堆排序。 希尔排序为什么不适合链表排序? 希尔排序:希尔排序中经常涉及到对序列中第 i + gap 的元素进行操作,其中 gap 是希尔排序中当前的步长。而链表不支持随机访问的特性,导致这种操作不适合链表,因而希尔排序算法不适合进行链表排序。 为什么不建议使用堆排序? 堆排序:堆排序所使用的最大堆 / 最小堆结构本质上是一棵完全二叉树。而完全二叉树适合采用顺序存储结构(数组)。因为数组存储的完全二叉...
链表0805
0203. 移除链表元素**给你一个链表的头节点 **head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 1: 12 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 示例 2: 12 输入:head = [], val = 1 输出:[] 示例 3: 12 输入:head = [7,7,7,7], val = 7 输出:[] ** **提示: **列表中的节点数目在范围 **[0, 104] 内 1 <= Node.val <= 50 0 <= val <= 50 题解: 1234567891011121314151617 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next ...