cv学习总结(11.21-11.27)
本周彻底完成了CNN的全部内容,包括CNN的原理,代码实现等。CNN是一种神经网络的framework,跟connected_layer相比,更加侧重于能够保持原来的空间结构不变;我们输入的图片是一个n*n*3的numpy数组,其中n是图片的分辨率,3是RGB颜色空间的数目,如果是全连接层,我们需要将输入的照片reshape成一个向量,例如如果输入照片为32*32*3,那么我们就需要将图片reshape成3072*1的向量,然后再经过权重矩阵的映射得到最终的分数列向量;这么做无疑是将图片的空间结构特性消除了。而CNN则是考虑用一个filter,其形状为size*size*3,来考虑局部的特性。每次用filter与当前size*size*3这么大的numpy数组进行矩阵运算,最终得到一个数字,然后通过不断的横移纵移filter遍历整个输入图片,最终得到一个矩阵。如果原本的尺寸为n,卷积核的尺寸为m,每次移动的步长为stride,并且有F个卷积核则经过该层后的数据规模为((n-m)/stride+1,(n-m)/stride+1,F)。与传统的全连接层相比,CNN无疑是既可以保证原本输入的数据的空间结构不变,又可以得到图片部分区域的局部特性。
除了卷积层,一般还应该具有池化层,池化则是考虑将输入数据进行downsampleing,进行局部采样。其可以起到减少数据规模,减少运算量,防止过拟合的现象出现。此外,由于图片中大部分的特征都是冗余的,所以进行池化层仍然可以保持原来特性不变。此外,由于池化层中实施局部采样得到的新的空间结构中的采样方式的多种多样,可以实现非线性的组合方式,类似于激活函数,比如maxpooling层,就是用了max函数实现局部采样,这样同时可以具有一些激活函数的特性。当然,并非所有的时候池化都是好的,在有的时候,池化层过多可能会导致样本特性丢失过多导致学习能力下降的情况出现。
在这周,同样实现我们一门专业选修课的机器学习的模型(虽然我没选那门课),分别有两个老师的两个大作业:第一是图片分类,第二个是虚假新闻检测,其中图片分类问题是5分类问题,虚假新闻检测是2分类问题,虚假新闻检测还需要用到NLP中一些数据处理的方法。在实现中,同时接触了pytorch和keras两个框架,并且成功安装/运行了GPU版本用来跑模型。最终CNN在图片分类问题上实现了90的准确率,在NLP问题上实现了96的准确率,也算是用框架实战cv和NLP问题的一个小的项目。
这周在给好兄弟们分享神经网络的一些知识的时候,自己也有了一些小的心得体会:现在的机器学习到底在干什么?用已有的数据集训练一个模型,需要寻求一个最佳的模型能够最准确的预测遇到的新的问题。那么训练的这个模型在神经网络中,就是好多好多层中的映射关系,即权重矩阵;那么我们该优化我们的权重矩阵,就是试图最小化损失函数来解决,而这么做的原因是因为我们的损失函数具有一定的意义:在训练中对于原本信息的损失程度,或者在softmax中,我认为可以看做将模型错误分类产生的贡献,我们最小化损失函数也就是在使得模型预测错误的可能性减小,尽可能增大模型预测正确的概率。那么如何通过我们已经训练好的模型进行预测呢,那便是将图片/数据经过这个计算模型,得到一个分数矩阵,通过不同类别分数的高低进行比较,计算机倾向于认为分数较高的那一类作为当前数据的类别。我觉得在神经网络中,以这个作为理解的基础,在以后学习RNN或者ResNet这些更高级更复杂的framework中,可能会有一些比较好的影响。
2022.11.27
cv学习总结(11.21-11.27)的更多相关文章
- 第33次Scrum会议(11/21)【欢迎来怼】
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/21 11:35~11:57,总计22min.地点:东北 ...
- c++学习书籍推荐《深入理解C++11 C++11新特性解析与应用》下载
百度云及其他网盘下载地址:点我 编辑推荐 <深入理解C++11:C++11新特性解析与应用>编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑.系统.深 ...
- 打印出1,11,21,31,41。。。。。。的shell脚本
打印出1,11,21,31,41......的shell脚本 方法一:#!/bin/bash ;i<;i=i+));do echo $i #cat -n /etc/services | sed ...
- 2016年12月16日 星期五 --出埃及记 Exodus 21:11
2016年12月16日 星期五 --出埃及记 Exodus 21:11 If he does not provide her with these three things, she is to go ...
- China Intelligent Office Summit(2018.11.21)
时间:2018.11.21地点:中关村软件园国际会议中心
- 2017/11/21 Leetcode 日记
2017/11/21 Leetcode 日记 496. Next Greater Element I You are given two arrays (without duplicates) num ...
- Kafka 学习笔记之 Kafka0.11之console-producer/console-consumer
Kafka 学习笔记之 Kafka0.11之console-producer/console-consumer: 启动Zookeeper 启动Kafka0.11 创建一个新的Topic: ./kafk ...
- JZOJ 11.21 提高B组反思
JZOJ 11.21 提高B组反思 T1 第二类斯特林数 直接套公式 \(S(i,j)=S(i-1,j-1)+S(i-1,j)*j\) 由于过大,\(unsigned\ long\ long\)都存不 ...
- Qt 学习之路 2(27):渐变
Qt 学习之路 2(27):渐变 豆子 2012年11月20日 Qt 学习之路 2 17条评论 渐变是绘图中很常见的一种功能,简单来说就是可以把几种颜色混合在一起,让它们能够自然地过渡,而不是一下子变 ...
- 零基础入门学习Python(21)--函数:lambda表达式
知识点 lambda 表达式 Python 允许使用lambda关键字创建匿名函数 lambda 函数怎么使用? 单个参数 >>> def add(x): return 2*x + ...
随机推荐
- LoadRunner——分析图详解(十四)
<分析图详解> 一.Running V user s 图 X轴表示运行所用的时间,Y轴表示vuser数, 显示在整个运行过程中随着时间的推移,虚拟用户数量是如何变化的,具体描述为:用户是如 ...
- 【LeetCode997】【哈希表】[Py/C#/Scala/Elixir/Kotlin/Rust/Ruby/Swift/PHP/Java/Go/C++/TS/Erlang/Racket/Dart] 一道统计入度出度的简单题目
可以看到,一般而言,Python最接近"想思路时写的伪代码" 目录 解题思路 代码 python3 C# scala elixir kotlin rust ruby swift p ...
- CTFSHOW-Reverse-刷题记录
re2 打开初步分析为32位程序,无壳,拖入IDA32分析 找到关键行47-50,分析得出各函数内部的基本作用如图所示 首先进入分析输入后的处理 可以很明显看出,是对输入的字符串进行处理后再操作,因此 ...
- 开发一个二方包,优雅地为系统接入ELK(elasticsearch+logstash+kibana)
去年公司由于不断发展,内部自研系统越来越多,所以后来搭建了一个日志收集平台,并将日志收集功能以二方包形式引入各个自研系统,避免每个自研系统都要建立一套自己的日志模块,节约了开发时间,管理起来也更加容易 ...
- kubernetes 设置 Master 可调度与不可调度
kubernetes 设置 Master 可调度与不可调度 语法 kubectl taint node [node] key=value[effect] [effect] 可取值: [ NoSched ...
- 在Kubernetes上安装Netdata的方法
介绍 Netdata可用于监视kubernetes集群并显示有关集群的信息,包括节点内存使用率.CPU.网络等,简单的说,Netdata仪表板可让您全面了解Kubernetes集群,包括在每个节点上运 ...
- pysimplegui之列表布局
重点 1通过循环生成一行 2通过循环生成一列 3[]这个代表一行 4需要大量重复布局的时候可以使用 生成的布局(如果你有> 5个重复元素/行,一定要阅读) 本节讨论了 5 种生成布局的特定技术. ...
- Schillace法则:使用LLM创建软件的最佳实践
LLM(大语言模型)的发展正在改变软件开发的方式. 以前,开发人员需要编写大量的代码来实现其意图,但现在,随着语言模型的发展,开发人员可以使用自然语言来表达他们的意图,而无需编写大量的代码.这使得软件 ...
- HTML+CSS仿写的登录页面
仿写的登录页面 使用HTML+CSS,感觉很简单,记录下 话不多说,直接上代码 <!DOCTYPE html> <html lang="en"> & ...
- qiankun vue子应用升级webpack5问题记录
升级的方式是使用最新版本的 vue-cli 脚手架,重新创建一个新项目,然后复制 @vue/cli-xxx , vue 相关依赖最新版本到子应用项目 -> 核对babel, eslint相关配置 ...