UserWarning: IPython History requires SQLite, your history will not be saved

ipython每次新打开都用不了之前的历史命令, 很不习惯, 于是抽时间解决了这个问题

/home/user/.local/share/virtualenvs/wanghai-jvDhItmI/lib/python3.8/site-packages/IPython/core/history.py:226: UserWarning: IPython History requires SQLite, your history will not be saved
  warn("IPython History requires SQLite, your history will not be saved")

解决方法: 重新编译和安装python

sudo echo be careful to use root permission.
cd softwares/Python-3.8.6
./configure --enable-optimizations  --enable-loadable-sqlite-extensions && make && sudo make altisntall

或直接安装最新版Python

wget https://gitee.com/waketzheng/carstino/raw/master/upgrade_py.py
sudo echo Going to install python3.8 && python3 upgrade_py.py

 

### 关于 `requires_grad=False` 导致梯度为 None 的问题 在 PyTorch 中,当使用 `torch.utils.checkpoint` 或其他涉及梯度计算的功能时,如果所有输入张量的属性 `requires_grad` 被设置为 `False`,则即使启用了梯度检查点机制,也不会触发梯度计算过程。这种情况下,最终得到的梯度会是 `None`,进而导致模型参数无法正常更新[^1]。 #### 原因分析 PyTorch 的自动微分引擎 (`autograd`) 只会对那些满足条件 `requires_grad=True` 的张量进行跟踪并计算其对应的梯度。因此,在定义变量或操作过程中,若未显式指定某些张量的 `requires_grad` 属性,则默认值通常为 `False`。这意味着这些张量不会参与后续的梯度传播流程[^2]。 例如给定如下代码片段: ```python import torch x = torch.tensor([1, 2], dtype=torch.float32, requires_grad=True) a = torch.tensor([3, 4], dtype=torch.float32, requires_grad=True) y = x * 2 + a z = torch.mean(y) z.backward() print(x.grad, x.requires_grad) # 输出梯度以及是否需要梯度标记 print(a.grad, a.requires_grad) ``` 上述例子展示了如何正确配置 `requires_grad` 参数以确保能够获取所需张量的梯度信息[^3]。 #### 解决方案 为了防止由于错误设定而导致丢失必要的梯度数据,可以采取以下措施之一: 1. **确认所有需优化参数已正确定义**: 在创建待训练权重或其他可学习组件时,务必将其初始化为具有 `requires_grad=True` 特性的实例; 2. **动态调整现有对象的状态**: 如果发现部分已有结构尚未开启此功能,可通过调用 `.requires_grad_()` 方法即时修改状态; 具体实现方式参见下面的例子: ```python # 动态启用某个张量的梯度追踪能力 some_tensor.requires_grad_(True) ``` 另外值得注意的是,“Checkpointing”技术虽然有助于减少内存消耗,但它依赖完整的前向路径重建来进行反向传播阶段的操作。所以即便采用该策略也不能忽略基础要素——即保证关键节点具备有效的梯度流传递途径[^5]。 最后提醒一下,深入理解框架内部工作机制比如阅读官方文档或者高质量的技术博客(如OpenMMLab分享)[^4]往往能帮助开发者更高效地解决问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值