国内服务器安装 Dokploy
使用国内服务器安装 Dokploy 时,可能由于网络问题无法顺利下载某些 Docker 镜像而卡住。本文记录了修改 install.sh
并成功在一台国内服务器上安装 Dokploy 的过程。
使用国内服务器安装 Dokploy 时,可能由于网络问题无法顺利下载某些 Docker 镜像而卡住。本文记录了修改 install.sh
并成功在一台国内服务器上安装 Dokploy 的过程。
在使用 rolling(win_type="exponential").std()
计算标准差时,结果可能会受数据起点的影响。
本文将通过几个简单的代码示例,探究数据具有不同数据起点(通过 iloc[1:]
手动构造不同的数据起点进行模拟)对 Pandas rolling(win_type="exponential").std()
计算结果的影响,并提供了一个自定义函数实现严格控制滚动回看窗口,以获得一致的结果。
最近学习了 Rust。一直听说 Rust 效率高,从ruff
和 uv
这两个基于 Rust 实现的工具开始对 Rust 印象深刻,自己亲身体会过它的语法细节之后,对它为什么快、为什么“安全”,总算有了一点理解。
推荐一下 rustlings
这个学习 Rust 的项目。每个文件就是解决一个小问题,这种在小练习中修改代码的过程比从头到尾读教程要有趣和有成就感得多。结合《Rust 语言圣经》这个优秀的教程食用,效果甚佳。
在 PyTorch 中,ConcatDataset
和 StackDataset
是两种不同的数据集组合方式。本文介绍了它们的作用及其适用场景。
## 使用 ConcatDataset 连接数据集
concat_dataset = ConcatDataset([dataset1, dataset2])
## 遍历 ConcatDataset
for sample in concat_dataset:
print(sample)
## 使用 StackDataset 组合数据集
stack_dataset = StackDataset(dataset1, dataset2)
## 遍历 StackDataset
for sample in stack_dataset:
print(sample)
本文用一个简单的数值例子,说明了 LayerNorm 的作用。
torchmetrics
的 CompositionalMetric
将越大越好的指标作为损失函数在量化研究中,我们可以使用诸如 IC
一类的指标来衡量信号的质量。若将 IC
作为损失函数,我们自然是希望其值越大越好。但是,模型的优化过程总是朝着损失函数越小的方向进行的,因此我们需要将 IC
取反后作为损失值,使得模型朝着 IC
越大的方向优化。
本文介绍了一个便捷的方法,借助 torchmetrics
的 CompositionalMetric
将越大越好的指标作为损失函数。
pred = torch.tensor([1, 2, 3, 4]).to(torch.float32)
target = torch.tensor([2, 3, 5, 10]).to(torch.float32)
print("原始相关系数:", np.corrcoef(target, pred)[0, 1])
loss_fn = 0 - PearsonCorrCoef()
print("损失函数:", loss_fn(pred, target))
papermill
运行 Jupyter Notebook当执行两个具有前后依赖关系的 Jupyter Notebook 时,我们需要等待第一个 Notebook 运行完成,再开始运行第二个 Notebook。
一个笨拙的方法是,先预估好第一个 Notebook 运行需要的时间(例如 1 小时),然后在第二个 Notebook 的第一个 Cell 添加:
这将使第二个 Notebook 运行 1 小时后,再运行后续的 Cell。
上述方法需要事先预估第一个 Notebook 运行需要的时间,预估时间过短会导致第二个 Notebook 提前运行,预估时间过长又会导致第二个 Notebook 浪费很多时间在 time.sleep()
上。
本文介绍了如何使用 papermill
运行 Jupyter Notebook,实现控制先后运行两个 Notebook 的功能。
pypika
中使用 Criterion.all()
作为筛选条件占位符及其注意事项pypika
能够通过编程方式动态生成 SQL 查询。本文介绍了 Criterion.all()
作为筛选条件占位符及其注意事项。