5 款超牛逼的 Jupyter Notebook 插件

本文介绍了5款强大的Jupyter Notebook插件,包括Scratchpad(临时代码测试)、Code folding(代码折叠)、Zenmode(专注模式)、Table of contents(目录生成)和Variable Inspector(变量检查器)。这些插件能大幅提升数据分析和代码编写效率,让Notebook更加整洁易用。

1、Scratchpad

这个插件非常有用,我们做数据分析EDA或者特征工程时经常要各种尝试,而不是要真正的运行cell代码。
这个时候在同一个notebook里来回运行就非常容易乱,找不到自己想要的那个对的代码了。当然,可以注释,不过也比较不好管理。
使用这个插件可以在当前内核上运行代码,而不必在实际代码之间不断添加新单元以进行实验或计算。使用 Shift + Enter 打开便签本,然后通过 Ctrl + B 将其关闭。
在这里插入图片描述

测试时真心方便

2、Code folding

code folding 插件提供了三种代码折叠选项,在敲代码过程中是非常有必要的。

1、缩进折叠

该算法可以检测缩进,允许将缩进一一折叠。这样我们就可以折叠更多的代码了,看下下面的代码。
在这里插入图片描述
如上所示,有两个缩进。因此,此代码单元先折叠为:在这里插入图片描述
进一步的折叠:在这里插入图片描述

2、第一行注释折叠

这种折叠用在第一行中有注释的单元格。
结果是仅显示第一行中的注释,而不显示整个单元格。这样,当我们删除代码时,可以保留第一行的注释,对单元格进行简短而准确的描述。
所以,以下单元格…
在这里插入图片描述
可以折叠成这样:在这里插入图片描述

3、魔术折叠

上面的概念也适用于第一行是魔术命令的情况。
这个特殊的折叠对于import导入包的单元格可能特别有用。
另一个应用场景是删除所有非Python代码,以避免可能的干扰。在这里插入图片描述
折叠会将上面的单元格变成:在这里插入图片描述

3、zenmode

最后一个插件可能是三个中最常用的了。
zenmode插件可以将菜单删除,使你可以专注于代码。
这样可使 Jupyter notebook 的界面在视觉和使用上更舒服。在这里插入图片描述

小屏利器

4、Table of contents

这个插件将为notebook增加一个目录。
通过点击下方图片中红框内的按钮,即可激活或停用它。在这里插入图片描述

当使用含有较多内容的notebook时,该功能的实用性便体现出来了。

点击目录中的任何标题,即可直接定位到notebook的相应位置。

5、Variable Inspector

可以通过菜单上标红的按钮来执行该扩展。
点击按钮后,将显示当下命名空间中的所有变量信息,包括变量的名称、类型、大小、形式和值。在这里插入图片描述

代码量比较大时会有很大用处

6、安装方式

Jupyter NbExtensions Configurator

Jupyter NbExtensions Configurator 是Jupyter Notebook的一个扩展工具,它提供了一系列标签,只需勾选相应插件就能自动载入。里面的插件能帮助减少工作量,书写更优雅的代码和更好的展示结构。

安装Jupyter NbExtensions Configurator

用conda安装:

conda install -c conda-forge jupyter_contrib_nbextensions

conda install -c conda-forge jupyter_nbextensions_configurator

或者用pip:

pip install jupyter_nbextensions_configurator jupyter_contrib_nbextensions

jupyter contrib nbextension install --user

jupyter nbextensions_configurator enable --user

安装完毕,进入Jupyter Notebook,在主界面会多出一个NbExtensions的标签,里面有很多插件可供选择,示意图如下:在这里插入图片描述
上边是重点介绍的几个插件的用法,其余的不详细介绍,有兴趣的可以到官网(https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/index.html)自行了解。

### 使用 Jupyter Notebook 实现 Faster R-CNN 要在 Jupyter Notebook 中实现 Faster R-CNN 模型,可以按照以下方式构建完整的流程。以下是关于数据准备、模型搭建以及训练过程的具体说明。 #### 1. 安装依赖库 在运行任何代码之前,需要安装必要的 Python 库来支持深度学习框架和工具链。假设使用 TensorFlow 和 Keras 来实现 Faster R-CNN: ```bash !pip install tensorflow keras numpy opencv-python matplotlib ``` 上述命令会安装所需的库,包括 `tensorflow` 和 `keras`,它们是实现 Faster R-CNN 的核心组件[^1]。 #### 2. 数据预处理 Faster R-CNN 需要输入经过标注的数据集。通常情况下,目标检测任务中的数据会被转换为 Pascal VOC 或 COCO 格式的标注文件。可以通过如下函数生成锚框(anchor boxes),这是区域建议网络(RPN)的重要组成部分之一: ```python import numpy as np def create_train_anchors(feature_size, base_anchors, stride=16): """ 创建训练用的 anchor box。 参数: feature_size: 特征图尺寸 (height, width) base_anchors: 基础 anchor box 坐标列表 [(xmin, ymin, xmax, ymax)] stride: 图像到特征图缩小倍数 返回: anchors: 训练用的 anchor box 列表 """ anchors = [] for r in range(feature_size[0]): for c in range(feature_size[1]): for a in base_anchors: anchors.append([ c * stride + stride // 2 + a[0], r * stride + stride // 2 + a[1], c * stride + stride // 2 + a[2], r * stride + stride // 2 + a[3] ]) return np.array(anchors) base_anchors = [[-8, -8, 8, 8], [-16, -16, 16, 16]] # 示例基础 anchor box feature_map_shape = (37, 50) # 假设特征图为 37x50 stride_value = 16 train_anchors = create_train_anchors(feature_map_shape, base_anchors, stride=stride_value) print(f"Total number of anchors generated: {len(train_anchors)}") ``` 此部分实现了基于给定特征图大小创建 anchor box 的功能[^4]。 #### 3. 构建 Faster R-CNN 模型 接下来定义 Faster R-CNN 的主要模块——特征提取器(Feature Extractor)、区域提议网络(Region Proposal Network, RPN)以及其他辅助层。 ##### (a)特征提取网络 利用卷积神经网络提取图像特征。这里可以选择 VGG16 或 ResNet 等预训练模型作为骨干网路。 ```python from tensorflow.keras.applications import VGG16 from tensorflow.keras.layers import Input, Flatten, Dense, Conv2D, MaxPooling2D from tensorflow.keras.models import Model input_tensor = Input(shape=(None, None, 3)) base_model = VGG16(weights='imagenet', include_top=False, input_tensor=input_tensor) features = base_model.output model_feature_extractor = Model(inputs=input_tensor, outputs=features) ``` ##### (b)RPN 网络 设计用于预测 objectness score 及边界框回归偏移量的部分。 ```python def build_rpn_network(input_shape, num_anchors): inputs = Input(shape=input_shape) x = Conv2D(filters=512, kernel_size=(3, 3), padding="same", activation="relu")(inputs) cls_output = Conv2D(num_anchors, kernel_size=(1, 1), activation="sigmoid", name="rpn_cls")(x) reg_output = Conv2D(num_anchors * 4, kernel_size=(1, 1), activation=None, name="rpn_reg")(x) model = Model(inputs, [cls_output, reg_output]) return model num_base_anchors = len(base_anchors) rpn_model = build_rpn_network((None, None, 512), num_base_anchors) ``` ##### (c)损失函数 为了优化模型参数,需定义适合的目标函数。对于分类分支采用交叉熵损失;而对于回归分支则选用平滑 L1 损失。 ```python import tensorflow.keras.backend as K def smooth_l1_loss(y_true, y_pred): diff = K.abs(y_true - y_pred) less_than_one = K.cast(K.less(diff, 1.0), "float32") loss = (less_than_one * 0.5 * diff ** 2) + ((1 - less_than_one) * (diff - 0.5)) return K.mean(loss, axis=-1) def rpn_cls_loss(y_true, y_pred): mask = K.cast(K.greater_equal(y_true, 0), dtype="float32") # 掩码过滤掉忽略项 loss = K.binary_crossentropy(y_true[mask > 0], y_pred[mask > 0]) # 对正负样本求 BCE Loss normalizer = K.maximum(K.sum(mask), 1e-6) return K.sum(loss) / normalizer losses = {"rpn_cls": rpn_cls_loss, "rpn_reg": smooth_l1_loss} metrics = ["accuracy"] ``` 以上代码片段展示了如何自定义适用于 Faster R-CNN 的损失计算逻辑[^3]。 #### 4. 编译并训练模型 最后一步是对整个架构进行编译操作,并加载已有的权重或者随机初始化后再执行 fit 方法完成端到端的学习过程。 ```python full_model.compile(optimizer="adam", loss=losses, metrics=metrics) history = full_model.fit( train_dataset, validation_data=val_dataset, epochs=EPOCHS, batch_size=BATCH_SIZE ) ``` 通过这种方式可以在本地环境中快速部署一套实验性质较强的解决方案[^2]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值