logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

sed: extra characters at the end of l command及undefined label錯誤

筆者在MacOS下使用sed -i時出現了extra characters at the end of l command的錯誤,經過查詢,才知道sed -i在Linux和MacOS上的用法不完全一樣。

為什麼這個 Tensor 算 dense?PyTorch _eval_is_non_overlapping_and_dense 深入解析

PyTorch 2.0引入的torch.compile和动态形状系统通过符号表达式处理张量形状,其中_eval_is_non_overlapping_and_dense函数用于判断张量内存布局是否"非重叠且稠密"。文章通过两个实例详细解释了"重叠"现象:1)使用as_strided时步长过小导致相邻行元素指向同一内存位置;2)使用expand时步长为零使所有

#pytorch#深度学习#人工智能 +1
PyTorch SymNode 為何找不到方法實作?──sizes_strides_methods 動態安裝機制解析

这篇文章介绍了PyTorch中动态形状系统的核心机制,特别是关于sizes_strides_methods的实现与应用。主要内容包括: PyTorch使用torch.SymInt和torch.SymNode来处理动态形状输入,其中sizes_strides_methods是一组关键方法,用于检查张量的连续性、内存布局等属性。 这些方法包括: 连续性检查(is_contiguous) 不同通道优先布

#python#pytorch#深度学习 +1
PyTorch SymNode 的 _is_contiguous 從何而來?──sizes_strides_impl 實作詳解

本文解析了PyTorch中_make_node_sizes_strides函数的第一部分sizes_strides_impl的实现细节。该函数通过setattr将sizes_strides_impl以_method形式安装到SymNode类上,如_is_contiguous。函数接收sizes和strides两个SymNode列表参数,通过getattr获取模块级函数作为op,在SYM_FUNCT

#python#pytorch#深度学习 +1
為什麼要有 eval_is_non_overlapping_and_dense?PyTorch 包裝層與調用端解析

本文介绍了PyTorch中的eval_is_non_overlapping_and_dense函数,它是_eval_is_non_overlapping_and_dense的包装函数,用于判断张量的内存布局是否"非重叠且稠密"。文章分析了该函数的两层包装逻辑:通过guard_bool确保返回bool类型,再转换为int类型供后续使用。同时介绍了该函数的三个主要调用场景:在IsNonOverlapp

#python#pytorch#深度学习 +1
PyTorch symbolic_shapes 模組的 is_contiguous 從哪來?── sizes_strides_user 安裝與實作解析

本文解析了PyTorch中sizes_strides_user函数的动态安装机制及其实现原理。该函数作为对外暴露的入口函数,会根据输入参数类型选择不同处理路径:若参数包含SymInt,则调用SymNode对应方法并包装返回结果;若参数为sympy.Expr或Python整数,则直接调用预定义的评估函数。文章详细介绍了通过setattr将函数动态安装到模块的过程,以及参数类型转换和结果包装的关键实现

#pytorch#人工智能#python +1
在 Google Colab 中安裝 PyTorch 2.2.0

本文记录了在Google Colab中安装PyTorch 2.2.0的完整过程。由于PyTorch 2.3版本移除了check_fn属性,且Python 3.12不支持torch.compile,作者不得不将环境降级到Python 3.11和PyTorch 2.2.0。具体步骤包括:清理现有PyTorch安装、安装指定版本PyTorch、解决NumPy版本冲突问题(需降级到1.26.4)。最终成功

#pytorch#人工智能#python +1
C++中的initializer_list

C++11引入了std::initializer_list,用于表示由大括号包围的初始化列表。它本质上是一个轻量级代理对象,包含指向常量数组的指针和长度信息。编译器会在以下情况自动构造该对象:1)列表初始化对象时;2)作为赋值或函数调用的右操作数时;3)绑定给auto变量时。initializer_list的实现通常采用指针和长度组合,仅提供只读访问,不负责内存管理。其成员类型包括value_ty

#c++
C++中的List-initialization

摘要:C++11引入的列表初始化(List-initialization)通过大括号{}语法初始化对象,分为直接列表初始化和复制列表初始化两种形式。直接列表初始化适用于变量声明、临时对象、动态分配对象等场景,而复制列表初始化则用于等号赋值、函数参数传递等场合。C++20进一步扩展了语法,支持指定初始化器。该特性同时考虑显式和非显式构造函数,但复制列表初始化仅能调用非显式构造函数。列表初始化提供了更

#c++
Python 是直譯語言?其實你每天都在編譯它

本文探讨了Python语言执行过程的常见误解。虽然Python常被称为"直译式语言",但官方文档指出其实际执行包含编译和直译两个阶段:源代码会先被编译成字节码(bytecode),然后由CPython虚拟机的求值循环逐条执行。这种混合特性使得Python既不是纯编译语言,也不是简单的逐行直译语言。文章引用官方文档和开发者实验证据,说明Python通过词法分析、语法解析、生成AST和控制流程图等步骤

#python
    共 20 条
  • 1
  • 2
  • 请选择