Python | jupyter-notes
快捷键
jupyter notebook自带一大堆快捷键,且分为两个模式:
按下Enter,进入Edit模式;
按下Esc,进入Command 模式 。
按h可以查看命令列表。
调试[^1]
异常信息可设置两种模式
%xmode Plain 简约版
%xmode Verbose 详细版
可输入%debug进行调试
当然最方便的调试通过pdb库实现
import pdb
pdb.set_trace()
可设置断点、步进、显示变量等,输入h可查看命令列表。
[^1]: Jupyter notebook教程系列(九)Jupyter notebook调试
Hexo折腾记
插件官方功能
名称
作用
操作
资源文件夹
使用本地图片
1. 将root的_config.yml中post_asset_folder设置为true2. 在文内可通过{% asset_path slug %}或者引用图
其余插件
名称
作用
操作
hexo-douban
关联豆瓣阅读、电影等
1. npm install hexo-douban --save;2. 在root的_config.yml中写入配置项3. 使用该插件若弹出空白页,将_config.yml文件中站外链接新窗口打开设为false
local_searchAlgolia
站内文章搜索
1. npm install hexo-generator-search --save;2. 在root的_config.yml中写入配置项
LeanCloud
Valine
简约评论系统,依托于LeanCloud
* 目前大部分Hexo主题提供支持1. 获取LeanCloud中AppID和APPKey2. 修改配置初始化内容为上值
h ...
目标检测模型的性能评估 - mAP
Object Detection[^1]
Ground truthClass + X coordinate + Y coordinate + Box Width + Box Height
评估架构12345678910{% mermaid graph LR %} A(置信度阈值)--模型的预测-->C; B(IoU阈值)--后期的评估-->C; C(TP,FP,TN,FN)-->D(precision); C-->E(recall); C-->G(accuracy); D-->F(mAP); E-->F G-->F{% endmermaid %}
IoU - Intersection over Union
FP,FN,TP,TN[^2]为了计算precision和recall,与所有机器学习问题一样,我们必须鉴别出TP、FP、TN、FN。
指标
含义
True Positive
真正例 被判定为正样本,事实上也是证样本。
...
Anaconda + Python + Tensorflow + Keras + 其他相关杂症
Anaconda+Python[^1][^2]Install
从官网下载Anaconda,选择3.6 version
安装时,需要注意
选择“Just Me”,只为当前用户安装
“Choose Install Location”中,路径不能含有空格,不能是unicode编码。实际上,默认路径即可。
“Advanced Insatallation Options”中
“Add Anaconda to the system PATH environment variable”需勾选(或会影响其它程序使用)。
“Register Anaconda as the system Python 3.6”当仅使用python3.6该版本时勾选。
检查
可成功启动Anaconda Navigator
Anaconda Prompt中输入可查看版本
12conda --versionconda update conda
Environment以下均在Anaconda Prompt中进行操作。
创建
1conda create --name <env_name> ...
YOLO | YOLOv2 | YOLOv3 paper &code
YOLO[^1]特征
速度快
定位不够准确,召回率较低
理念
CNN网络将图片分割成S*S网格,每个单元格负责检测中心点落在该格子内的目标。
每个单元格预测B个边界框和置信度$confidence_score=Pr(object)*IOU^{truth}_{pred}$式中:前者表示边界框是否包含目标,取0或1;后者是预测和实际框的交并比。
边界框的大小位置用$(x,y,w,h)$表示,分别指边界中心位置(以左上为零点的坐标)与框的宽与高(相对于整个图片的比例)。此外,用$c$表征置信度。
对于单元格还需预测出C个类别概率值,表征的由该单元格负责预测的边界框其目标属于各个类别的概率。 这些概率值其实是在各个边界框置信度下的条件概率,即边界框类别置信度
$$P_r(Class_i|object)*confidence_score$$
$$=P_r(Class_i|object)*Pr(object)*IOU^{truth}_{pred}$$
$$=P_r(Class_i)*IOU^{truth}_{pred}$$
总结,则每个单元格需要预 ...
Keras | 常用Callbacks及范例
keras/keras/callbacks.py
Introduce在使用Sequential 或 Model 类型的 .fit()或.fit_generator 方法训练时,可以设置callback关键字参数,完成一系列回调功能,如:
1hist=model.fit(x_train, y_train, batch_size=128, epochs=20, verbose=0,callbacks=[ckpt, csv_logger, lr])
Historyhttps://www.cnblogs.com/chendai21/p/8137601.html
1keras.callbacks.History()
该回调函数被自动启用到每一个 Keras 模型,由 fit 方法返回。
History.history是一个记录了连续迭代的训练/验证(如果存在)损失值和评估值的字典。
代码内容为训练历史可视化的一个示例。
123456789101112131415161718192021import matplotlib.pyplot as ...
如何理解Python中的if name == 'main'
本文来源:Python 中的 if name == ‘main‘ 该如何理解
简述if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。
程序入口对于很多编程语言来说,程序都必须要有一个入口,比如C,C++,以及完全面向对象的编程语言Java,C#等,都需要有一个main函数作为程序运行的开始。
Python则不同,它属于脚本语言,动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口。
一个Python源码文件(.py)除了可以被直接运行外,还可以作为模块(也就是库),被其他.py文件导入。不管是直接运行还是被导入,**.py文件的最顶层代码都会被运行**,而当一个.py文件作为模块被导入时,我们可能不希望一部分代码被运行。
而if __name__ == '__main__ ...
keras | 一些小问题
本文用于收集在使用keras过程中遇见的各种各样的注意事项和小问题。
BatchNormalization报错Shape must be rank 1 but is rank 0 根据keras Document[^1a]所述,BN层的axis应取需要标准化的轴(通常是特征轴)。
即在 data_format="channels_first" ,对应为*(batch,channel,img_h,img_w)时,设置 axis=1 ;在(batch,img_h,img_w,channel)*时,设置为axis=3。
然而在我使用ResNet的过程中,当数据设置为后者时,工作正常;设置为前者时,系统报错提示Shape must be rank 1 but is rank 0 for 'batch_normalization_1/cond/Reshape_4' (op: 'Reshape') with input shapes。
据查,该问题为keras的版本bug。可考虑通过permute_dimensions变换来规避 ...
keras | pd.read_csv分批读取数据用于fit_generator
fit与fit_generatorfit
Load all data into the graphics memory in one time
Trains the model for a given number of epochs (iterations on a dataset)
fit(x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)
fit_generator
Trains the model on data generated batch-by-batch by a Python generator
Use yield to return the data to fit_ ...
且将新火试新茶(其一)
我对任何唾手可得、快速、出自本能、即兴、含混的事物没有信心。我相信缓慢、平和、细水流长的力量,踏实,冷静。我不相信缺乏自律精神、不自我建设、不努力,可以得到个人或者集体的解放。
十二月底,关注的博主陆陆续续开始写总结和规划。每每刷到,总免不了一番感叹,但往往特只有这时候,才会惊觉:逝者如斯,不舍昼夜。
回看自留地,发现16年时并没有写总结,兴许是生活过于充实忘记了,又或者因为什么事情误了时段,之后也懒得再补。
这一次的回顾,便有两年的时间作为素材。这两年里,结识很多有趣的人,培养一些全新的爱好,尝试从未有过的体验,也面临过命运的抉择……
手帐手帐这个坑,可以说是母上带我入的。
那是16年的2月份,母上带给了我一本带有日期的横线本。起初只是不以为意地胡乱摸索着用法,尔后忽然得知这东西原来叫做“手帐”,从此开始各种刷微博、加群、逛论坛、搜手帐术,一发不可收拾。
加了一个群,认识很多小伙伴,莫名其妙进了管理组,也参与过活动的举办,如今热情消减,每天刷qq的时候批一波入群申请,偶尔和大家唠唠嗑,更多的时候还是装高冷禁言刷广告的。
同样是在群里,了解到拼贴这种用法,起初新鲜得很,各种收集 ...