python使用中遇到的问题总结
python中的元类
请参考博文深刻理解Python中的元类(metaclass)
12a = 10print(a.__class__)
这里,10是一个对象,通过a.__class__就可以找到创建该对象的类,结果是<class 'int'>
同理
12s = "abc"print(s.__class__)
结果为<class 'str'>
自定义类
1234567class Person: passp = Person()print(p.__class__)
结果为<class '__main__.Person'>
那么,根据“类也是对象”这句话,int这个类对象,是谁来创建的呢?
1print(int.__class__) # 或者print(a.__class__.__class__)
结果为<class 'type'>
同理
1234567class Person: passp = Person()print(Person.__class__) # 或者print(p.__class__.__cl ...
CNN学习系列:PyTorch使用中的一些疑问
在使用 PyTorch 搭建网络的过程中,经常遇到一些 python 的基础知识,不了解的话就会卡住半天想不出来,在此先总结一下这段时间遇到的问题。
CNN学习系列:骨干网络学习之ResNet
论文地址:Deep Residual Learning for Image Recognition
自该骨干网络开始,我开始接触到所谓的预训练权重的概念。
以下内容来自深度学习权重初始化
深度学习其本质是优化所有权重的值,使其达到一个最优解的状态,这其中,需要更新权重的层包括卷积层、BN层和FC层等。在最优化中,权重的初始化是得到最优解的重要步骤。如果权重初始化不恰当,则可能会导致模型陷入局部最优解,导致模型预测效果不理想,甚至使损失函数震荡,模型不收敛。而且,使用不同的权重初始化方式,模型最终达到的效果也是很不一样的。因此,掌握权重的初始化方式是炼丹师必备的炼丹术之一。
而预训练初始化是权重初始化的其中一种方式
在实际中,我们大部分是在已有的网络上进行修改,得到预期结果后,再对网络进行裁剪等操作。而预训练模型是别人已经在特定的数据集(如ImageNet)上进行大量迭代训练的,可以认为是比较好的权重初始化。加载预训练模型进行初始化,能使我们进行更高频率的工程迭代,更快得到结果。而且,通常加载预训练模型会得到较好的结果。
但是要注意几个问题:
许多文章指出,当源场景与目标场景差 ...
CNN学习系列:骨干网络学习之AlexNet
论文地址:ImageNet Classification with Deep Convolutional Neural Networks
网络结构为
使用pytorch复现该网络
1234567891011121314151617181920212223242526272829303132333435363738394041mport torch.nn as nnfrom torch.nn import functional as Ffrom torchsummary import summary# pytorch默认的实现方式为torchvision.models.alexnet()class AlexNet(nn.Module): def __init__(self, num_classes=1000): super(AlexNet, self).__init__() self.conv1 = nn.Conv2d(in_channels=3, out_channels=96, kernel_size=(11, 11), stride=(4, 4) ...
CNN学习系列:骨干网络学习之VGG
论文地址:Very Deep Convolutional Networks for Large-Scale Image Recognition
使用pytorch复现该网络
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677import torch.nn as nnimport torch.nn.functional as Fimport torchvisionfrom torchsummary import summary# pytorch默认的实现方式为torchvision.models.vgg19()class VGG(nn.Module): """ VGG builder """ def __init__(self, arch: list, num_clas ...
CNN学习系列:千里之行始于足下——LeNet
1998年,Lecun等人在论文“Gradient-Based Learning Applied to Document Recognition”里第一次定义了CNN网络结构,该网络被称为LeNet,成为CNN的开山鼻祖。
YOLOv5初探
YOLOv5的GitHub项目地址:https://github.com/ultralytics/yolov5
CSDN博主在YOLOv5超详细的入门级教程系列里面讲的很详细,包括所用数据集的格式介绍,如何制作自己的数据集制作自己的PASCAL VOC2007格式的数据集,如何配置,如何训练。在此总结一下步骤:
我的目录结构如下
里面有3个数据集,fish和helmet是我自己标注的,他们的类别都只有1个。VOC2007数据集是开源并且标注好的。我在每个数据集里面都放了个voc_label.py的脚本,他们的内容都差不多,例如,fish里面的voc_label.py内容为
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657import xml.etree.ElementTree as ETimport pickleimport osfrom os import listdir, getcwdfrom os.path impor ...
《神经网络编程——使用PyTorch进行深度学习》课程代码(二)
Neural Network Programming - Deep Learning with PyTorch
《神经网络编程——使用PyTorch进行深度学习》课程代码(一)
You can find this course at https://www.youtube.com/playlist?list=PLZbbT5o_s2xrfNyHZsM6ufI0iZENK9xgG or https://deeplizard.com/learn/video/v5cngxo4mIg. While in China, those videos were added Chinese subtitles and transfered to Bilibili by an uploader, here is the link https://www.bilibili.com/video/BV1UE411N7pD.
计算机视觉(北邮鲁鹏)学习笔记(三)
拟合(Fitting)
相机标定
世界坐标系->相机坐标系->图像坐标系,相机内参外参
你一定用得到的LaTeX入门资料
学习使用LaTeX时遇到的问题及解决方案
学长论文中公式的推导
推导师兄论文中给的一些公式
OpenCV学习
准备用一个月的时间,系统学习下OpenCV
卡尔曼滤波核心公式推导
感谢宝藏up主DR_CAN
课程地址:卡尔曼滤波器
书写工具:ipad Pencil + GoodNotes
PDF版点此下载:卡尔曼滤波器.pdf
打印版:卡尔曼滤波器-打印版.pdf
神经网络反向传播
手动推导反向传播公式
MathJax添加扩展、KaTex注意事项及语法参考
我平常用Atom来写markdown,而Atom的markdown-preview-enhanced插件用来实时预览最后显示的情况。这是个特别棒的插件,支持KaTeX和MathJax渲染,插件的中文文档在这里
markdown-preview-enhanced中文文档
Markdown Preview Enhanced 使用 KaTeX 或者 MathJax 来渲染数学表达式。
KaTeX 拥有比 MathJax 更快的性能,但是它却少了很多 MathJax 拥有的特性。你可以查看 KaTeX supported functions/symbols 来了解 KaTeX 支持那些符号和函数。
Hexo也支持KaTeX和MathJax,为了使插件和博客二者同步,你最好将他们的渲染引擎改成同一个。在Hexo中,使用不同的渲染引擎,要安装或者卸载不同的插件,具体请参考主题的配置文件。
在markdown-preview-enhanced的设置里,选择渲染引擎的选项是Math Rendering Option。
MathJax添加扩展
在使用的过程中,我首先遇到的问题是,命令\Omicro ...
docker常用命令
拉取docker镜像:
1docker pull <容器名>
查看所有镜像
1docker images
运行容器
1docker run <容器名>
查看正在运行的docker容器:
1docker ps
停止某个docker容器
1docker stop <容器id>
提交修改
1docker commit -m "提交内容" <容器id> <容器名>
删除image
1docker rmi <镜像id>
查看容器运行的历史
1docker ps -a
删除容器运行的历史
1docker rm <容器id>
创建镜像
1docker build <镜像id>