VIM 查漏补缺
命令
shift-v: 选择一整行
*
:向下搜索光标所在的词#
:向上搜索光标所在的词
w
: 移动到下一个单词b
: 移动到上一个单词F
: 搜索当前行光标前的字母<n>G
: 移动到第n行行首ctrl-e
: 屏幕向下移动,效果同j
dgg
: 删除文档开头到当前行的内容dG
: 删除当前行到文档末尾的内容ggdG
: 删除文档所有内容
dip
: 删除当前行所在段落(到下一个空行)
命令
shift-v: 选择一整行
*
:向下搜索光标所在的词#
:向上搜索光标所在的词
w
: 移动到下一个单词b
: 移动到上一个单词F
: 搜索当前行光标前的字母<n>G
: 移动到第n行行首ctrl-e
: 屏幕向下移动,效果同j
dgg
: 删除文档开头到当前行的内容dG
: 删除当前行到文档末尾的内容ggdG
: 删除文档所有内容
dip
: 删除当前行所在段落(到下一个空行)
在Pytorch里面使用交叉熵loss函数的时候,发现结果最是比较差,通过搜索才发现这样一段话:
You should pass raw logits to nn.CrossEntropyLoss, since the function itself applies F.log_softmax and nn.NLLLoss() on the input.
也就是用交叉熵损失的时候,不能在网络的最后用 log_softmax
或者 Softmax
层,因为交叉熵损失相当与是 log_softmax
+ NLLLos
的组合。
如果网络最后用了Softmax层的话,需要使用 NLLLoss
或者 MSE loss
。
这里列出了我平时关注的一些技术博客列表,希望给看到这个页面的你一些新的知识来源:
另外发现,最近大家不怎么更新自己的博客了,至于为什么,我想了几个可能的原因。
一个是缺少来自用户的反馈,或者激励。大部分博客,来自读者的反馈少,不像知乎,微信公众号,有方便及时的用户反馈和激励(点赞,在看,收藏),反馈少对作者写作的积极性应该还是很有很大影响的。
另一个是写博客还是有一定成本的。自己搭建的博客,需要自己维护环境,不像公众号和知乎,打开网页就能写,实时保存草稿。
在中文互联网越来越碎片化和圈地化的今天,希望独立的技术博客能给我们带来新的思路,新的启发,新的激动人心的东西。
C++17标准库里面引入了轻量级的只读字符串表示类型string_view
,用来替代const char*
和const string&
,在传入函数的时候减小内存开销(因为string_view
类只包含字符串的指针和字符串的长度值,开销小于string
类型)。
1 | sudo pip install -U torch==1.4+cu100 torchvision==0.5+cu100 -f https://download.pytorch.org/whl/torch_stable.html |
PythonAPI
子目录,运行setup.py
安装:1 | git clone https://github.com/cocodataset/cocoapi.git |
这里直接安装编译好的二进制文件。
1 | sudo pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu100/index.html |
如果文件下载太慢或者超时,可以手动在浏览器里面下载好文件,再用下面的命令安装(假设下载的whl
文件是xxx.whl
):
1 | sudo pip install xxx.whl |
安装完后,打开 Python 命令行,执行下面的命令,如果不报错,说明安装成功:
1 | import detectron2 |
为了测试,需要下载 detectron2 的源代码,基于 demo/demo.py
进行简单的测试:
1 | git clone https://github.com/facebookresearch/detectron2 |
注意上述代码需要在 detectron2 的 git 仓库外面执行,否则会报错。
测试时输入支持单张图片、多张图片、单个图片文件夹、网络摄像头以及视频文件,每种情况参数设置如下:
1 | # 单张图片 |
``–opts MODEL.WEIGHTS表示测试用的模型参数,可以是一个本地目录,也可以是一个
detectron2://`开头的一个模型路径,这时会先下载模型到本地再测试:
1 | # 使用本地的模型参数 |
模型的名字可以在 Model Zoo 查看。
训练代码参考 tools/train_net.py
,目前Detection看。