python列表常用方法和功能
python的列表list是非常好用的容易,在刷算法题时用起来比较方便。在这里介绍python列表中的常用方法和常用的功能(主要是刷算法题时常用到)。list常用方法
append(data) 在列表末尾追加数据。
insert(index, data) 在列表中指定位置加入数据(注:index是下标号,data是所要插入的 数据)。
pop() 删除列表末尾的元素。
pop(index) 删除列表中指定位置的元素。
index(data) 返回指定元素在列表中的索引号。
remove(data) 删除指定的元素。
clear() 清空列表 。
reverse() 将列表里的元素进行前后顺序调换(翻转)。
extend(list) 拼接两个列表(将括号中的 ...
Git常用命令汇总
git init —— 初始化仓库
git status —— 查看仓库的状态
git add —— 向暂存区中添加文件
git add [文件1] [文件2] […] —— 添加一个或多个文件到暂存区
git add [目录] —— 添加指定目录到暂存区
git add . —— 添加当前目录下的所有文件到暂存区
git commit —— 保存仓库的历史记录
git commit —— 记述详细提交信息
git commit -m “[提交信息]” —— 提交概述信息
git commit —amend —— 修改提交信息
git log —— 查看提交日志
git log —— 查看完整日志
git log —pretty=short —— 查看简述日志
git log [目录名/文件名] —— 只显示该目录/文件的日志
git log -p —— 查看提交所带来的改动
git log -p [录名/文件名] —— 只查看该目录/文件提交所带来的改动
git log —graph —— 以图标形式查看分支
git diff —— 查看更改前后的差别
git dif ...
箕斗卸煤检测
需求利用卷积神经网络,训练相关数据,使得自己的系统能够实时识别箕斗是否卸煤,是否在位。需要输出三个状态即 箕斗未在位,箕斗在位,箕斗卸煤。卸煤过程:卸煤结束:箕斗不在位:
分析这是个简单的分类问题,把箕斗的状态分为三种状态,所以可以设置输出值为100,010,001。因为训练时不用输入整张图片进行训练,所以选择有关键特征的小图来进行运算。
数据准备截取短视屏视频大部分是一个多小时时长的,因为视频中大部分都是相同的箕斗不在位的状态,所以从中截取一小部分时间的视频来制作数据集。因为视屏的帧率是25,所以一分钟的视屏都有1500张图片。在这里我截取了两段视屏来制作数据集,第一段就是正常卸煤状态的视屏,第二段是箕斗右侧其它箕斗卸煤的视屏,在这里目标箕斗一直是处于不在位的状态,但是与之前一段不同的是这段视屏中有红色的光存在,如图所示:视屏截取代码如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 ...
模型的保存与加载
方式1:model_save.py代码如下:
12345678import torchimport torchvision# 导入vgg16网络vgg16 = torchvision.models.vgg16(pretrained=False)# 保存模型torch.save(vgg16, "vgg16_method1.pth")
model_load.py代码如下:12345678import torch# 使用这种加载方式时需要将网络的类引用进来from model_save import *# 加载模型model = torch.load("vgg16_method1.pth")vgg16_method1.pth是模型结构+模型参数。这种方式保存了整个网络的结构和其中的参数,所以保存的模型比较大。
方式2:123456import torchimport torchvision# 保存模型,只保存参数torch.save(vgg16.state_dict(), "vgg16_method2.pth")model_loa ...
OpenCV截取指定时间范围内的视频(python)
本文通过OpenCV将视频裁剪成指定时间范围内的小视频,代码如下:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465import cv2def capture_video(video_path, result_video_path, video, result_video, start_time, end_time): """ 功能:截取短视频 参数: video_path:需要截取的视频路径 result_video_path:截取后的视频存放的路径 video:需要截取的视频的名称(不带后缀) result_video:截取了的视频的名称(不带后缀) start_time:截取开始时间(单位s) end_time:截取结束时间(单位s) "&quo ...
OpenCV把视频拆分成图片(python)
本文通过OpenCV将视频裁剪成指定时间范围内的小视频,代码如下:OpenCV把视频拆分成一帧一帧的图片并存放入指定的目录下,代码如下:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import cv2import osdef apart(video_path, video_name, image_path): """ 功能:将视频拆分成图片 参数: video_path:要拆分的视频路径 video_name:要拆分的视频名字(不带后缀) image_path:拆分后图片的存放路径 """ # 在这里把后缀接上 video = os.path.join(video_path, video_name + '.mp4') # 提取视频的频率,每1帧提取一个 frameFrequenc ...
sublime_text3显示空格和Tab
sublime text 3显示空格和Tab找到Sublime Text —> Preferences —> Settings
在Preferences.sublime-settings — User中加入:1"draw_white_space": "all"注意:属性和属性之间用’,’隔开!
手写数字识别(识别纸上的手写数字)
题目
题目分析题目的意思是要识别自己用手在纸上写的数字。从特征上来看,手写数字相比于普通的电脑上的数字最大的 不同就是数字的边缘会发生不同幅度的抖动。而且,在MNIST数据集中的数字是边缘为黑色的,然后数字是不同灰度的白色的,如下所示:在数据集中,每个数据都是$28*28$的灰度图,并且黑色部分都是零,其余白色的灰度值并不统一。因为如果训练时背景都是统一的时候我们测试用的图片背景也必须是统一的,否则基本无法识别出来。除非训练的时候换各种不同的背景大数据进行训练,这样特征就不会依托着背景而存在,剩下的就是要识别的物体自己所拥有的特征了。所以在这里我要做的就是在图片预处理的时候尽量让图片处理成接近测试图片的样子。
训练网络1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 ...
前馈神经网络解决XOR问题
题目
网络设计根据题意可以做出如下设计:
手算手算结果如下:
代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071import torchimport numpy as npimport torch.nn as nnimport torch.optim as optim# 初始化数据data = np.array([[1, 0, 1], [0, 1, 1], [1, 1, 0], [0, 0, 0]], dtype='float32')# 将输入输出值导入对应的列表x = data[:, :2]y = data[:, 2]# 定义异或网络类class XOR_net(nn.Module): def __init__(self): super(XOR_net, self).__init__() self.Conn_layer = nn.Sequ ...
计算神经网络的值
题目
分析在手写数字识别的网络中有十个输出值,网络是通过找到最大的输出值的概率来判断识别的数字是多少。比如识别结果1对应着输出值\begin{bmatrix}
0 &1 &0 &0 &0 &0 &0 &0 &0 &0
\end{bmatrix}当然,根据题意这里的1是指值大于0.99,0是指值小于0.01。如果要将最后的结果转换成四位的二进制表示,上述输出值最后需要转换成\begin{bmatrix}
0 &0 &0 &1
\end{bmatrix}。解题思路其实就等价于设计一个两层的网络,输入值就是那十个数,输出值就是对应的四位二进制数,然后对这个网络进行训练就能够得到合适的权重和偏置。
代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384import torchimport numpy as ...