- 博客(159)
- 问答 (1)
- 收藏
- 关注
原创 Python argparse 参数定义:为什么不要直接用 bool 类型参数?
使用 type=bool 在 Python 的 argparse 中会导致问题,因为任何非空字符串(包括 "False")都会被解析为 True。正确的替代方案包括:1)使用 store_true/store_false 作为开关参数;2)自定义 str2bool 函数来解析 True/False 字符串;3)用 0/1 数字代替布尔值,再手动转换。这些方法能避免布尔参数解析时的常见陷阱,使命令行工具更可靠。
2025-08-31 11:53:14
516
原创 使用markRaw实例化echarts对象
在Vue 3中,使用markRaw标记ECharts实例可以避免将其转换为响应式对象。不加markRaw会导致Vue对ECharts实例进行不必要的响应式转换,带来性能开销和潜在冲突;而使用markRaw则能保持原始对象,提高性能并避免副作用。对于集成第三方库或复杂对象,建议使用markRaw以优化性能和避免干扰库的内部逻辑。
2025-06-24 19:44:16
484
原创 ECharts中SVG图标定与响应式适配实践笔记
摘要: ECharts中使用SVG图标时,因窗口缩放导致标定点偏移,主要因SVG与坐标系未同步缩放。尝试禁用监听无效后,通过动态计算容器尺寸比例,手动调整SVG尺寸实现同步(需记录初始宽高、对比实时比例)。核心代码包括监听resize事件、更新graphic配置的宽高属性。此方案解决了ECharts与SVG的坐标映射问题,适用于需精准标定的场景,注意需匹配viewBox与轴范围。扩展建议:结合防抖优化性能,确保路径元素符合ECharts地图注册规范(如唯一id、单一路径)。
2025-06-15 11:26:22
432
原创 No module named ‘src‘
文章摘要: "找不到src文件"问题通常由路径解析错误导致。解决方法是:1) 设置PYTHONPATH环境变量(如export PYTHONPATH=./),将当前目录加入模块搜索路径;2) 在目录中添加__init__.py文件,标识为Python包。注意当直接运行train.py且目录结构明确时通常无需处理。这两种方法能有效解决模块导入路径问题。
2025-05-28 16:09:19
921
原创 ModuleNotFoundError: No module named ‘resource‘
文章摘要:在运行torch_timeseries库时出现"ModuleNotFoundError: No module named 'resource'"报错。解决方法是在site-packages/torch_timeseries/dataset目录下,将所有文件中import resource的语句删除或替换为空即可。该问题是由于调用了不存在的resource模块导致,简单的移除相关导入语句可以解决该兼容性问题。
2025-05-26 20:10:50
350
原创 将神经网络加到列表里面之后,用.to(device)函数迁移参数到gpu上失败
使用[nn.Linear(10,10) for i in range(n)]生成多个相同的神经网络被重复调用,独自训练参数,结果参数迁移的时候发现只有列表的第一个对象的参数被迁移到gpu上了,其他参数都没有被迁移过去。nn.ModuleList 这个类,可以把任意 nn.Module 的子类 (比如 nn.Conv2d, nn.Linear 之类的) 加到这个 list 里面,类似于Python 自带的 list。如果只使用python自带的list,会发现。
2024-04-13 20:02:06
634
原创 梯度:般在神经网络里面是一个batch清空一次梯度还是一个epoch清空一次梯度?
通常,在神经网络训练中,是在每个 mini-batch 处理完成后清空一次梯度,而不是在每个 epoch 结束后清空一次梯度。这是因为在每个 mini-batch 中,模型参数的梯度是根据当前 mini-batch 的损失计算得到的,如果不在每个 mini-batch 后清空梯度,梯度会在每个 mini-batch 中累积,导致参数更新不准确。
2024-04-03 16:56:42
868
1
原创 AttributeFrror:DatetimeIndex‘object has no attribute ‘weekofyear‘
使用.isocalendar().week方法再将其转换为列表,再将其转换为pandas的Index对象实现同样的效果。报错,原因,pandas的DatetimeIndex对象的weekofyear已经弃用,解决办法。
2024-03-31 16:35:35
760
原创 FFPFormer:Take an Irregular Route: Enhance the Decoder of Time-Series Forecasting Transformer
随着物联网(IoT)系统的发展,精确的长期预测方法对决策者评估当前状况并制定未来政策至关重要。目前,Transformer和MLP是两种深度时间序列预测的范式,其中前者因其出色的注意力机制和编码器-解码器架构而更为流行。然而,数据科学家似乎更愿意深入研究编码器,而忽略了解码器。一些研究者甚至采用线性投影来替代解码器,以降低复杂性。我们认为,无论是提取输入序列的特征,还是寻求输入与预测序列之间的关系,即编码器和解码器各自的功能,都至关重要。
2024-03-21 22:30:00
961
原创 OneNet:OneNet: Enhancing Time Series Forecasting Models under Concept Drift by Online Ensembling
时间序列预测模型的在线更新旨在通过有效地更新基于流媒体数据的预测模型来解决概念漂移问题。许多算法都是为在线时间序列预测而设计的,一些算法利用跨变量依赖性,而另一些算法则假设变量之间的独立性。考虑到每个数据假设在在线时间序列建模中都有自己的优缺点,我们提出了在线集成网络(OneNet)。它动态地更新并结合了两个模型,一个关注于跨时间维度的依赖关系建模,另一个关注于跨变量依赖关系建模。我们的方法将基于强化学习的方法合并到传统的在线凸规划框架中,允许两个模型与动态调整权重的线性组合。
2024-03-21 22:28:59
1680
1
原创 2023年11月论文:DANCE OF CHANNEL AND SEQUENCE(CSformer)(无源码)
DANCE OF CHANNEL AND SEQUENCE:AN EFFICIENT ATTENTION-BASED APPROACH FORMULTIVARIATE TIME SERIES FORECASTING推荐阅读指数: ★★大意了,没仔细看实验结果和模型图,精度了一篇有点不太行的文章,实验结果只有一张表,模型图又很简单,且机构也很一般。通道独立性导致信息退化,文章提出CSformer来应对这一问题,CSformer中精心设计了两阶段的自注意力机制,该机制可以分别提取特定序列信息和通道信息,同
2024-01-11 09:10:02
1214
4
原创 ForecastPFN: Synthetically-Trained Zero-Shot Forecasting
绝大多数时间序列预测方法需要大量的训练数据集。然而,许多现实生活中的预测应用程序只有很少的初始观测值,有时只有40个或更少。因此,在数据稀疏的商业应用中的,大多数时间序列预测方法的适用性受到了限制。(开篇说明课题背景:观测数据少)虽然最近有些工作尝试在非常有限的初始数据设置下(“zero-shot"场景)做预测 ,由于预训练的数据不同,其性能也呈现出不一致性。在我们的工作中,我们采用了一种不同的方法,并设计了(prior-data fitted network),这是第一个纯粹基于新的合成数据分布。
2024-01-08 17:04:04
1628
原创 Take an Irregular Route: Enhance the Decoder of Time-Series Forecasting Transformer(FFPformer)
当前,Transformer和MLP是用于深度学习时间序列预测的两种主要范式,其中前者因为其注意力机制和encoder-decoder结构而被更加广泛地应用。然而数据科学家似乎更愿意在encoder上投入研究,decoder往往被忽略。一些研究者甚至试图采用线性映射替代decoder来降低复杂度。(decoder被忽略的现状)我们认为探寻输入和预测序列的联系与提取输入序列的特征同等重要,前者恰好是encoder和decoder的代表功能,具有很大意义。
2024-01-07 20:19:46
1226
1
原创 论文阅读:Large Language Models Are Zero-Shot Time Series Forecasters(2023NIPS)(LLMTime)
对于预测任务:通过将时间序列编码为一系列数字,可以将时间序列预测任务转化为文本里面的next-token预测任务。在大规模预训练语言模型的基础上,文章提出了一些方法用于有效,并(分布转换部分涉及到诸多统计学知识)。在数值补全任务中,文章展示了语言模型(LLMs)如何通过非数值文本自然处理缺失数据,无需插补,如何适应文本侧面信息,并回答问题以帮助解释预测。
2023-12-27 15:34:20
2220
1
原创 lag-llama源码解读(Lag-Llama: Towards Foundation Models for Time Series Forecasting)
文章内容:时间序列预测任务,单变量预测单变量,基于Llama大模型,在zero-shot场景下模型表现优异。创新点,引入滞后特征作为协变量来进行预测。
2023-12-27 15:11:26
2326
1
原创 np.random.shuffle
如果需要得到一个新的打乱顺序的数组,可以使用 numpy.random.permutation 函数,它返回一个新的数组,而不修改原始数组。对于多维数组,numpy.random.shuffle 函数会沿着第一个轴(axis 0)打乱数组的顺序。这个函数会直接修改原始数组,而不返回一个新的打乱顺序的数组。numpy.random.shuffle 将打乱数组的各行,但每行内部的元素顺序保持不变。这个函数返回一个新的打乱顺序的数组,而不修改原始数组。在这个示例中,my_array 数组的元素顺序被随机打乱。
2023-12-20 16:39:15
1574
原创 torch.tensor vs torch.from_numpy()
torch.tensor函数和torch.from_numpy()函数都可以将numpy array转换为torch tensro,不同之处在于前者共享内存(torch的底层实现就是numpy,所以可以共享),后者开辟新的空间。
2023-12-18 22:56:24
700
原创 论文阅读:DSformer:A Double Sampling Transformer for Multivariate Time Series Long-term Prediction
多变量长期预测任务旨在预测未来较长一段时间的数据的变化,从而为决策提供参考。当前模型对时间序列的以下三个特征利用还不充分:全局信息、局部信息、变量相关性。由此文章提出DSformer(double sampling transformer)模型,该模型包含了double sampling(DS) block和 temporal variable attentioon(TVA) block。
2023-12-18 17:04:25
1245
2
原创 python注释规范
Python 中的函数注释通常使用文档字符串(docstring)来提供对函数的说明。文档字符串是放置在函数、模块或类的顶部的字符串,用于描述其功能、输入参数、返回值以及其他相关信息。
2023-12-14 08:56:51
1177
原创 Python中有下划线的函数和没有下划线的函数的区别
在PyTorch中,带有下划线的函数通常是原地操作,用于在张量上直接修改值,而不创建新的张量对象。需要注意的是,使用原地操作函数时要小心,因为它们会修改原始对象,可能导致意外的副作用。如果需要保留原始对象,或者希望避免修改原始对象,应使用对应的非原地操作函数。相反,没有下划线的函数通常表示这个函数会返回一个新的对象,而不修改原始对象。总结起来,带下划线的函数通常是原地操作,直接在原始对象上进行修改。没有下划线的函数通常是非原地操作,返回一个新的对象而不修改原始对象。
2023-12-13 14:32:16
804
原创 benchmark
在深度学习中,基准(benchmark)通常指的是一种标准或者参考,用于评估模型、算法或系统的性能。基准测试对于比较不同模型或算法的性能,以及评估它们在特定任务上的优劣非常重要。4.竞赛基准: 在深度学习领域,一些竞赛如ImageNet挑战赛、Kaggle竞赛等通常提供了公认的基准,用于比较不同团队或方法的性能。通过使用基准测试,研究人员和从业者能够更客观地评估和比较不同深度学习方法的性能,帮助他们选择最适合特定任务的模型或算法。这可以包括训练和推理的速度,以及模型在不同硬件配置下的资源利用情况。
2023-12-09 22:55:27
933
原创 python中的抽象方法
在 Python 中,可以通过使用抽象基类(Abstract Base Class,简称 ABC)来定义抽象方法。抽象基类是一种特殊的类,它不能直接实例化,而是用作其他类的基类。抽象方法作为接口定义在抽象基类中,要求子类必须实现这些方法。要定义抽象方法,需要使用 abc 模块中的 ABC 基类和 abstractmethod 装饰器。下面是使用抽象方法的示例:pass在上面的示例中,MyAbstractClass 是一个抽象基类,它定义了一个抽象方法 my_method()。
2023-11-09 22:41:30
1400
1
原创 python里面的浅拷贝和深拷贝
浅拷贝(shallow copy)和深拷贝(deep copy)是在 Python 中复制对象时的两种不同方式。
2023-11-05 16:07:20
254
原创 torch.gather函数用法
torch.gather 函数用于从输入张量中,然后将它们放入一个新的张量中。这对于根据索引从输入张量中检索值非常有用。
2023-11-01 11:04:11
486
原创 torch增加维度操作
在Python中,None 表示空值或占位符。在masked_pos[:, :, None]这个切片操作中,None 被用作一个占位符,以改变张量的维度。这通常用于将一维张量变为二维张量,或者改变张量的形状。具体来说,masked_pos[:, :, None] 的操作是用于在 masked_pos 这个张量的最后一个维度(通常是元素的维度)上增加一个新的维度。这个新维度将在每个原始元素之间插入,将原本的一维数据转换为二维数据。这种操作通常在深度学习中用于。
2023-11-01 10:31:44
1646
原创 zip函数用法:解压与打包
在 Python 中,zip 函数可以用于两种情况:打包(压缩)和解压(解包)。1.打包(压缩):当传递多个可迭代对象作为参数给 zip 函数时,它会将这些可迭代对象的相同位置的元素组合成元组,从而创建一个新的可迭代对象。例如,zip([1, 2, 3], [‘a’, ‘b’, ‘c’]) 会返回一个可迭代对象,其中包含三个元组:(1, ‘a’)、(2, ‘b’) 和 (3, ‘c’)。这是一种打包(压缩)操作,将多个可迭代对象的元素配对在一起。
2023-11-01 00:24:44
354
原创 ValueError: cannot switch from manual field specification to automatic field numbering
这个错误是由于在字符串格式化中混合了手动字段规范和自动字段编号引起的。在Python的字符串格式化中,你可以使用手动字段规范(例如 {0}、{1})或自动字段编号({})来指定变量的插值位置,但不能混合使用它们。在你的代码中,你正在混合使用手动字段规范和自动字段编号,这会导致错误。要解决这个问题,你可以选择一种方式来格式化的字符串。在这种情况下,大括号 {} 会自动按顺序填充相应的变量。如果你想使用手动字段规范,可以像你一开始的代码一样继续使用手动字段规范,但确保不要混合使用它们。
2023-10-31 08:55:02
731
原创 pytorch使用出现“RuntimeError: An attempt has been made to start a new process before the...“ 解决方法
num_workers
2023-10-29 16:06:32
107
数字图像处理复习时绘制的思维导图
2023-02-28
数字图像处理课程的思维导图
2023-02-23
为什么官网下载软件速度特别慢?
2022-02-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅