跳转至

所有文章

JupyterLite:在浏览器中运行 Python

JupyterLite 是一个轻量级的 Jupyter 笔记本环境,旨在为用户提供快速、便捷的交互式计算体验。与传统的 Jupyter 环境不同,JupyterLite 可以在不需要安装任何软件的情况下直接在浏览器中运行。

有时我们希望快速测试一些简单的代码(例如得到 ChatGPT 给出的代码后),就可以用 JupyterLite 在浏览器中快速运行代码。

本文记录了如何部署 JupyterLite 站点,以及参与开源项目贡献的心得。

image-20240109210830896

冬日的植物园

在冬日的冷风中感受到了阳光,让人不禁更加期盼春天的到来。

29708236-268C-4627-8CAD-3FDFF878C462_1_102_o

小猫是不是也在期盼春天呢

理解 PyTorch 中的 CrossEntropyLoss

在机器学习中,特别是处理分类问题时,损失函数是衡量模型预测与实际标签差异的关键。在 PyTorch 中,CrossEntropyLoss是一个常用的损失函数,用于分类问题。它首先通过 Softmax 函数计算对应类别的概率值,然后计算每个样本的负对数似然损失,最后对所有样本的损失值求平均。

本文将通过一个简单的例子来手动计算CrossEntropyLoss,并展示如何使用 PyTorch 实现这一过程。

PyTorch 中的数据与模型迁移:理解 .to(device) 的使用

在使用 PyTorch 框架进行深度学习模型训练时,我们经常需要将模型从 CPU 迁移到 GPU 上以加速计算。PyTorch 提供了一个简洁的 API model.to(device) 来实现这一过程。但是,在使用这个 API 时,我们可能会遇到两种不同的写法:model.to(device)model = model.to(device)。那么,这两种写法有什么区别呢?

Python 中的 set 和 list 转换时的随机性

在 Python 中,set 和 list 是两种不同的数据结构,它们在使用和功能上有很大的不同。set 是一个无序的、不重复的元素集合,而 list 是一个有序的、可重复的元素集合。

然而,从 set 到 list 的过程并不是一个简单的转换,因为 set 本身就是无序的,所以从 set 到 list 的过程并没有固定的顺序。这意味着每次转换得到的 list 的元素顺序可能都会不同。

在一些项目中,我们希望结果可重现,因此需要确保每一步的结果都没有随机性。许多随机性可以通过随机种子来控制,但从 set 到 list 的过程并不会被随机种子控制住,因此仍然存在随机性。

本文探讨了从 set 到 list 的过程中的随机性,亦作为排查随机性来源的一次记录。

批量修改 Jupyter Notebook 的内容

有时需要批量替换许多 Jupyter Notebook 的内容,由于 Jupyter Notebook 并不是简单的文本文件,在读取和替换时并不像批量修改 Python 脚本那样方便。

本文介绍了使用 nbformat 批量修改 Jupyter Notebook 的内容的方法。

20231207155702

Python argparse 解析命令行参数为布尔值

在 Python 开发中,命令行参数解析是一个常见的需求,它允许我们以命令行的方式向程序传递参数,从而实现更灵活和可配置的程序设计。Python 提供了一个内置库 argparse,它简化了命令行参数解析的过程。

这篇帖子介绍过如何使用 argparse 解析命令行参数,本文将介绍如何指定命令行参数为布尔值类型。直接使用 type=bool 是无法实现的,而需要传入一个 callable 的对象,在其中编写将字符串转换为布尔值的逻辑。

image-20231122230439023

chat-data: 基于大语言模型的数据分析应用

在数据分析领域,Pandas 是最受欢迎的 Python 库之一。然而,许多数据分析任务可以利用人工智能模型进行自动化。PandasAI 库为流行的数据分析和处理工具 Pandas 添加了生成式人工智能功能,你可以与 DataFrame 进行对话,并得到想要的数据分析结果。

本文使用 Streamlit 构建了一个在线应用,用户可以上传 Excel/CSV 数据,在输入想要执行的数据分析任务后,便可得到图表等结果,以及生成该结果的相应代码。

chat-data