自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.OMP: Hint

建议的最佳做法是确保程序中只链接了一个 OpenMP 运行时库。例如,避免在任何库中静态链接 OpenMP 运行时。作为一种不安全、不受支持和未记录的临时解决方法,可以设置环境变量。错误原因:在程序中发现了多个 OpenMP 运行时库的初始化。这可能会导致性能下降或产生错误结果,因为多个运行时库之间的交互可能会导致混乱。,以允许程序继续执行,但这可能会导致崩溃或产生错误的结果。解决:在运行的代码前加。

2024-04-12 11:45:44 5806

原创 三元表达式

总体来说,三元表达式使得在一行中进行简单的条件判断和结果返回变得更加紧凑和可读。然而,过度使用三元表达式可能会导致代码可读性下降,因此在选择使用时需要根据具体情况权衡。在python中,三元表达式是一种紧凑的条件表达式,也称为条件表达式或条件运算符。它允许在一行中根据条件选择两个值之一。三元表达式常用于生成列表和字典的推导式,根据条件对元素进行筛选或处理。三元表达式根据条件给变量赋值,使代码更加紧凑。是一个布尔表达式,如果为。

2024-01-17 17:07:01 618

原创 图数据的存储

图是一种比较复杂的数据结构,为适应图数据的增删改查,采用的存储结构有邻接矩阵、邻接表、十字链表、邻接多重表、边集数组等。用两个数组来表示图,其中一个数组存储顶点信息,另一个二维数组存储边信息,即一个顶点数组和一个边数组,这个二维的边数组存储的就是邻接矩阵。无向图的邻接矩阵是一个对称矩阵,主对角线为零,行或列的和称为顶点的度。有向图的邻接矩阵则不一定对称。无向图的邻接矩阵:简单直观,适用于稠密图,快速检查两个顶点之间是否有边连接。对于稀疏图,浪费了大量存储资源。

2024-01-17 16:52:04 467

原创 正则化方法介绍

正则化的目标是通过对模型性的参数或层的约束,使其在训练数据上表现的不那么复杂,从而提高在未见过数据上的泛化能力。在损失函数中,L1正则化项为λ * Σ|w_i|,其中λ是正则化强度,w_i 是权重参数。在损失函数中,L2正则项为λ * Σ(w_i^2),其中λ是正则化强度,w_i 是权重参数。Dropout通过随机丢弃神经元,强制网络学习更加鲁棒和泛化的特征,减少对某些特定神经元的依赖,防止过拟合。弹性网络是L1正则化和L2正则化的组合,具有两个超参数,一个用于控制L1正则化,一个控制L2正则化。

2024-01-16 16:48:23 444

原创 鸭子类型详细介绍

传入不同类型的对象(Dog、Cat、Duck),可以看到这个函数在运行时根据对象的行为而不是类型来执行。鸭子类型(Duck typing)是一种动态类型的编程概念,其核心思想是关注对象的行为而非是对象的类型。在鸭子类型中,一个对象的类型不是由其类或显示的接口定义决定的,而是由他具有的方法和属性决定的。鸭子类型可以鼓励设计更加通用的代码,从而提高代码的可重用性。对象只需满足特定的行为,而不必严格符合某个特定的接口或继承某个特定的基类。鸭子类型强调对象的行为是否满足特定的需求,而不是关注对象的 具体类型。

2024-01-16 13:30:51 814

原创 python之except关键字

在python中,except是用于处理异常的关键字,通常与'try'一起使用。异常处理的基本结构是通过try块包裹可能发生异常的代码,然后使用except块捕获和处理可能发生的异常。如果在try块中发生异常,python会跳转到与异常类型匹配的except块,执行相应的异常处理代码。

2024-01-16 13:04:46 699

原创 os.path模块常用函数

os.path模块提供用于处理文件路径的函数,这些函数可以跨平台使用,因为他们会根据操作系统的不同选择适当的路径分隔符。作用:分离路径中的文件名和扩展名,返回一个包含文件名和扩展名的元组。作用:返回指定路径的文件名(包含扩展名)作用:将多个路径组合成一个完整的路径。作用:返回指定路径的绝对路径。作用:判断指定路径是否是文件。作用:判断指定路径是否是目录。作用:返回指定路径的目录名。作用:判断指定路径是否存在。

2024-01-12 14:48:19 521

原创 迭代器与生成器

迭代器是一个实现了"__iter__()"和"__next__()"方法的对象。"__iter__()"返回迭代器自身对象,“__next__()”返回迭代中的下一个值。

2024-01-12 12:11:30 403

原创 python之闭包

这个例子中外部函数接受一个参数x,然后定义一个内部函数,这个内部函数引用了外部函数中的x。当我们调用outer_func(10)时候,返回了一个闭包closure,这个闭包可以在后续的调用中使用。通过调用outer_fun(00 创建了一个闭包counter,它保持着一个状态(value的值),并且可以在多次调用中保持这个状态。闭包是指在一个函数内部定义的函数,并且这个内部函数引用了外部函数中的变量。闭包允许这个内部函数捕获和访问外部函数的局部变量,即使外部函数已经执行完毕。

2024-01-12 11:11:30 385

原创 列表去重方法

使用dict.fromkeys方法,但需要借助collections.OrderDict保持原有顺序。利用itertools.groupby将相邻且相等的元素分组,取每组的第一个元素。使用列表推导式创建一个新列表,只包含原始列表中不重复的元素。利用集合的无重复性,将列表转换为集合,然后再转换回列表。方法三:使用itertools.groupby。方法四:保持顺序的去重方法。方法一:使用set去重。方法二:使用列表推导式。

2024-01-11 14:25:40 673

原创 详细介绍进程、线程与协程

当多线程中访问共享数据时,应该避免竞态条件(Race Conditions),可以使用锁(threading.Lock)等机制来保护共享资源,以防止数据不一致性的问题。python模块:在python中,multiprocessing模块提供了创建和管理进程的工具,它使用子进程而不是线程,因此在多核系统上更容易实现并行计算。特点:进程之间互相独立,拥有各自的地址空间,通信需要通过进程间通信(IPC)来实现。定义:线程是进程内的一个独立执行单元,一个进程可以包含多个线程,它们共享相同的资源。

2024-01-11 10:32:48 373

原创 configparser模块

1.读取配置文件:configparser允许从配置文件中发读取配置信息,以便在程序中使用。配置文件通常是INI文件格式,包含一到多个section,每个section包含一到多个键值对。configparser模块是python标准库中用于处理配置文件的模块,它提供了一种简单的方式来读取和写入配置文件,配置文件通常包含键值对,用于配置应用程序的参数和设置。2.写入配置文件:可以使用configparser来创建或修改配置文件,将程序中的配置信息保存到文件中。

2024-01-10 15:37:19 586

原创 GIL(Global interpreter Lock)

这也意味着,尽管python支持多线程,但在多线程环境下,同一时刻只有一个线程能够执行python字节码,其他线程被阻塞。Jython(Python运行在Java虚拟机上的实现)和IronPython(Python运行在.NET平台上的实现)等其他Python解释器可能没有GIL,因为它们使用不同的实现策略。在多进程的情况下,每个进程都有独立的解释器和内存空间,因此不受GIL的影响。GIL是python解释器中的一个全局锁,用于保护解释器中的内存管理。模块提供了支持多进程的工具。

2024-01-10 12:21:02 375

原创 什么是可哈希,哪些对象是可哈希的

在python中,可哈希通常指的是一个对象是否具有哈希值,且该哈希值在对象的生命周期内保持不变。哈希值是一个固定长度的整数,用于快速比较对象的相等性。对于可哈希的对象,可以使用内置的hash()函数在python中,不可变数据类型通常是可哈希的,而可变的数据类型通常是可哈希的.二.可哈希的对象:1.不可变基本数据类型:整数(int)浮点数(float)布尔值(bool)字符串(str)元组(tuple)2.不可变集合类型:frozenset:冻结的集合,因为他是不可变的,所以也是可哈希的。

2024-01-10 10:31:33 3373

原创 lambda表达式

注意:虽然lambda函数很方便,但对于一些复杂的逻辑,建议使用正式的def语句定义函数,以提高代码的可读性。匿名函数是一种没有具体名称的小型函数,通常用于需要一个简单函数但不想正式定义一个完整函数的情况。lambda是一个用于创建。

2024-01-09 14:44:03 358

原创 python中的垃圾回收机制

垃圾回收是一种自动管理内存的机制,目标是检测和回收不再被程序使用的内存,以达到避免内存泄漏和提高程序性能。python使用的是一种被称为引用计数的垃圾回收机制,以及一个循环垃圾回收器(cycle collector)来处理一些引用环的情况。引用计数不能解决循环引用的问题。循环引用是指一组对象彼此之间存在环形引用,这使引用计数永远不会降为零。循环垃圾回收器就会检测这种情况,并主动清理循环引用的对象。每个对象都有一个引用计数,当一个对象被引用时计数加一,当引用失效时计数减一。

2024-01-09 11:40:25 385

原创 装饰器的作用,以及给装饰器添加参数

装饰器可用于修改或拓展函数或方法,通常用于在不修改原始函数代码的情况下,添加额外的功能、行为或逻辑。2.使用偏函数:使用functools.partial船舰一个偏函数,将函数传递给他,并将其应用于装饰器。1.代码复用:装饰器可以定义一些通用的功能,并将其应用于多个函数,从而实现代码的复用。7.缓存:装饰器可用于实现缓存机制,将函数的结果缓存起来,提高程序的运行效率。4.性能优化:装饰器可用于缓存函数的结果,避免重复计算,提高程序性能。创建一个装饰器工厂函数,该工厂函数接收参数并返回一个真正的装饰器函数。

2024-01-08 17:13:55 812

原创 copy与deepcopy异同点

2.引用对象:对于嵌套对象,copy可能会导致原始对象和复制对象共享相同的嵌套对象;而deepcopy会为嵌套对象创建全新的副本,确保原始对象与复制对象的嵌套对象不共享引用。1.对嵌套对象的处理不同:copy只复制最外层对象,而不会递归地复制嵌套对象;deepcopy会递归地复制整个对象,包括所有嵌套的对象。3.对于不可变对象(整数、字符串等):copy与deepcopy使用效果类似,因为没有子对象需要复制。2.对于可变对象(列表、字典等):会创建副本而不是引用原对象。1.都用于创建对象的副本。

2024-01-08 11:05:18 705

原创 标准的英文文献引用格式

标准的英文文献引用格式通常遵循一定的规范,其中最常见的是美国心理学会(American Psychological Association,简称APA)和现代语言协会(Modern Language Association,简称MLA)的引用格式。

2023-12-20 14:17:51 774

原创 常用损失函数

常用的损失函数(Loss Functions)在深度学习中有很多种类,选择取决于问题类型和任务目标。

2023-12-12 14:54:33 261

原创 模型压缩技术-低比特量化

低比特量化是一种模型压缩技术,其目标是将深度学习模型的参数从使用浮点数表示减少到使用更少比特的定点数或整数表示。通过减小参数的位数,可以大幅度减小模型的存储需求和计算成本,从而适应于资源受限的环境,如移动设备、嵌入式系统等。低比特量化的优势在于在减小模型大小的同时,仍能保持相对较高的性能。在量化的情况下,可以进行训练或微调,以适应量化后的模型。由于量化后的模型使用了更少比特的表示,因此推理过程的计算量和存储需求相应减小。常见的选择包括二值量化(1比特)、三值量化(2比特)、八位量化等。

2023-12-12 14:49:40 167

原创 常用的模型压缩技术

在知识蒸馏的基础上,有一些扩展方法,如多模型蒸馏(Multi-Model Distillation)和交叉模型蒸馏(Cross-Model Distillation)等,以提高性能。使用一个大型、复杂的模型(教师模型)的预测结果来指导一个小型、简化的模型(学生模型)的训练。这有助于传递教师模型的知识,使得学生模型可以在参数更少的情况下保持高性能。模型压缩技术旨在减小深度学习模型的大小,提高推理速度,减少模型在部署和移动设备上的资源消耗。在训练后通过剪枝技术去除模型中冗余的连接和神经元,以减小模型的规模。

2023-12-12 14:48:17 324

原创 Transformer 模型

它引入了自注意力机制(Self-Attention Mechanism)来捕捉输入序列中不同位置之间的关系,同时也允许模型在处理每个位置的时候同时关注到其他位置的信息,从而有效地处理长距离依赖关系。通常,这包括一个全连接层,将解码器的输出映射到最终的目标空间,如词汇表中的单词,图像中的像素值等。由于 Transformer 模型的自注意力机制可以处理时序数据中的长距离依赖关系,它被广泛用于时序数据分析任务,如时间序列预测、股票价格预测等。通过将时空信息嵌入模型中,它可以学习时空数据中的模式和关系。

2023-12-06 16:40:27 232

原创 MAE,RMSE与MAPE的pytorch实现

【代码】MAE,RMSE与MAPE的pytorch实现。

2023-12-05 19:50:10 395

原创 chatgpt提问技巧

你的目标是帮助我创建最佳的 Prompt,这个 Prompt 将由你ChatGPT 使用。你将遵循以下过程: 1.首先,你会问我 Prompt 是关于什么的。2.根据我的输入,你会创建三个部分: a)修订后的 Prompt(你编写修订后的 Prompt,应该清晰、精确、易于理解) b)建议(你提出建议,哪些细节应该包含在 Prompt 中,以使其更好) c)问题(你提出相关问题,询问我需要哪些额外信息来改进 Prompt) 3.你提供的 Prompt 应该采用我发出请求的形式,由ChatGPT 执行。

2023-12-05 15:18:40 231

原创 论文笔记一

节点屏蔽和基于多粒度消息传递的联邦图模型(M3FGM),专门用于在由于隐私问题而需要数据去中心化的场景中进行时空数据预测。我们通过引入MaskNode层来提高模型的鲁棒性,提出的双子解码器结构可以实现独立的离线预测。因此,选择合适的掩码率可以有效防止模型过拟合,降低预测误差。例如,在使用基于所收集数据训练的交通预测模型时在晴天或雨天或雾天的环境中,通常可以观察到不可避免的性能下降。由于训练后的模型容易与训练数据过拟合,并且容易受到测试时统计量变化的影响,极大地限制了学习表征的泛化能力。

2023-12-04 20:52:08 38

原创 鲁棒性到底是什么

检查用户输入的数字是否在你的应用程序可以处理的范围内。例如,如果你的应用程序只能处理在特定范围内的数字,那么当用户输入超出范围的数字时,应用程序可以提供适当的反馈。考虑到可能发生的各种错误情况,如用户意外关闭应用程序或输入无效的命令,你的应用程序应该以一种优雅的方式进行错误处理,而不是崩溃或提供令用户困惑的反馈。鲁棒性设计的系统能够容忍输入数据的变化、用户行为的不确定性以及外部环境的波动。通过这些鲁棒性的设计,你的计算器应用程序就能更好地应对用户的各种输入和可能的异常情况,提高了系统的稳定性和可靠性。

2023-12-04 20:35:28 479

原创 PEMS数据集与.h5文件读取

PEMS(Performance Measurement System)是加利福尼亚州交通管理系统的一部分,提供了用于交通流量和性能测量的数据。PEMS数据集通常提供了大量的交通流量、速度、占有率等方面的时间序列数据。在PEMS数据集中,数据的格式通常是时间序列格式,其中包含了对交通流量、速度、占有率等指标的观测。这些数据可以以CSV(逗号分隔值)格式或其他结构化的格式呈现。方法递归地访问文件中的每个项目,并打印它们的类型(Group 或 Dataset)。52116条数据,325个传感器。

2023-12-04 19:51:44 1667 1

原创 METR-LA数据集介绍

METR-LA(Metro Traffic Los Angeles)数据集是一个用于交通流量预测的常用数据集,主要用于研究和评估交通预测算法的性能。该数据集包含了洛杉矶地区的交通传感器数据,可以用于建立和验证交通流量预测模型。实际METR-LA数据集可能包含更多的信息和特征。METR-LA数据集的格式通常是时间序列数据,其中包含了交通传感器在不同时间点上的流量信息。在这个例子中,每一行代表一个时间点的交通流量观测,其中。这可能是输入('x')和输出('y')的时间序列数据。

2023-12-04 19:07:14 5655 5

原创 Backend Qt5Agg is interactive backend. Turning interactive mode on.

该警告通常是由于在使用 Matplotlib 绘图时的交互模式引起的。在使用 Qt5Agg 后端时,Matplotlib 会默认开启交互模式,这样用户可以交互地查看和修改图形。

2023-12-01 15:38:45 2631 2

原创 AttributeError: ‘list‘ object has no attribute ‘cpu‘

要解决这个问题,你需要检查你的代码,确保你正在操作 PyTorch 张量而不是 Python 列表。你可能需要查看出现错误的代码行,并确认该行的对象是 PyTorch 张量。如果需要,你可以通过将列表转换为 PyTorch 张量来解决这个问题。属性是针对 PyTorch 的张量(tensor)对象的,而不是列表。在 PyTorch 中,张量是表示数据的基本单位,而列表是一种常见的 Python 数据结构。例如,如果你有一个 PyTorch 张量,你可以使用。属性,但是列表对象并没有这个属性。

2023-12-01 14:46:44 2042 1

原创 TypeError: can‘t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to

这个错误表明试图将一个位于 CUDA 设备上(通常是 GPU)的 PyTorch 张量转换为 NumPy 数组,而 PyTorch 目前不支持直接将 CUDA 张量转换为 NumPy 数组。要解决这个问题,你可以使用。方法将张量从 GPU 移动到 CPU,然后再将其转换为 NumPy 数组。

2023-11-30 17:11:13 1768

原创 Python 列表与 PyTorch 张量

总之,PyTorch 张量的 GPU 支持是为了充分利用 GPU 的并行计算能力,而 Python 列表不涉及底层硬件的加速操作,因此在 GPU 上移动的需求不同。Python 列表和 PyTorch 张量是两种不同的数据结构,其底层实现和用途不同,导致了在 GPU 上的处理方式不同。

2023-11-30 11:23:56 66

原创 解决TypeError: can‘t convert cuda:0 device type tensor to numpy. Use Tensor.cpu()

的 PyTorch 张量直接转换为 NumPy 数组,但 PyTorch 不允许直接将 GPU 上的张量转换为 NumPy 数组。为了解决这个问题,你可以使用。方法将张量复制到主机内存(CPU 上)然后再转换为 NumPy 数组。这个错误表明尝试将一个位于 CUDA 设备上(如。

2023-11-29 20:27:55 4915 1

原创 if __name__ == ‘__main__‘: 的作用

在Python脚本中,执行顺序通常是从脚本的顶部开始,逐行向下执行。当脚本被解释器加载时,它会按照代码的顺序逐行执行。的作用是检查脚本是否被直接运行,而不是作为模块被导入到其他脚本中。如果脚本是直接运行的,那么。后面的代码块将被执行。这样设计的主要目的是防止在模块被导入时执行一些不必要的代码。开始执行,而是从脚本的顶部开始执行。

2023-11-29 16:27:06 23 1

原创 使用GPU训练PyTorch代码时,要做的准备工作

在使用GPU训练PyTorch代码时,确保你的程序能够充分利用GPU资源是很重要的。这会在多个GPU上复制模型,并自动将输入数据分发到各个GPU上。,说明你的系统支持CUDA(NVIDIA GPU的并行计算平台)。如果你有多个GPU,并且想要利用所有GPU进行训练,可以使用。在长时间的训练过程中,GPU的显存可能会被占用,可以定期使用。在每个训练迭代中,将输入数据和目标数据移至GPU。这在处理大型模型和数据集时可能特别有用。这会将模型的所有参数都移动到GPU上。检查GPU是否可用。在创建模型之后,使用。

2023-11-29 16:22:40 119 1

原创 解决“ImportError: Missing optional dependency ‘pytables‘. Use pip or conda to install pytables.”问题

这里我说一个我踩过的坑,我遇到过安装成功tables但执行代码依旧会提示找不到这个模块,网上也有很多解决方案,但我提醒一下,一定一定要先排除掉安装tables的虚拟环境与执行代码的虚拟环境是否一致!我用的是python3.8,我在论坛里看到有人提到python3.8.2版本pip里没有pytables。

2023-11-29 10:32:28 2197 1

原创 解决pycharm文件标红问题

找到标红的文件点击右键,最下面有一个Mark Directory as,选择Cancel exclusion就解决啦!文件或文件夹被标记为"exclude",被标记后文件就不会被pycharm管理和处理。好好好每天都能发现新的问题,也蛮神奇的。

2023-11-29 10:13:28 1017 1

原创 conda虚拟环境操作命令及pycharm环境配置

此时在虚拟环境中使用pip或conda安装的依赖包也已经导入进去了。

2023-11-28 17:59:49 380

原创 安装.whl文件流程

下载正确的文件安装即可。

2023-11-28 13:22:40 193

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除