【傻瓜攻略】深入学习入门之卷积层以及大体框架(一)

呐,作者从今年刚开始学习机器学习,深度学习这方面……写个博客希望在一起学习的朋友们可以相互交流指正……

博客内容浅显,也可能存在错误,如果有bug希望大神们能批评指正。

话不多说,下面开始放干货!可怜

1、神经网络的大体架构


上面是一张关于vgg19的结构图,以此,为例,神经网络大致可以包括(不正经的傻瓜总结,跟书上不太一样):输入层,卷积层,池化层,激活函数,优化器,分类器,学习速率,损失函数。可能和书上的不太一样,但是上述这些是作者总结的关于神经网络最需要关注的。conv是卷积层,pool是池化层,fc为全连接层。大抵网络都是长上述这样,只是卷积层的大小,池化层等等略微变动。下面开始解释各类名词,以及作用吐舌头

2、卷积层 conv <---记住这个单词,很多时候大神们写博客就直接忽略了中文名。这样以后看大神的博客就轻松了,特别是英文的文章这种微笑

参考博客:https://blog.csdn.net/l691899397/article/details/52240421 感谢小姐姐or小哥哥的无私奉献

诺,这就是卷积的计算过程。

上述这个链接的博客,关于卷积的过程写的很详细,再次感谢小姐姐or小哥哥的无私奉献

参考博客:https://www.cnblogs.com/zf-blog/p/6075286.html 感谢小姐姐or小哥哥的无私奉献

这篇博客里面说明了卷积层的作用:我们通常会使用多层卷积层来得到更深层次的特征图


上一张关于输出输入数据大小的图:

F=3 => zero pad with 1

F=5 => zero pad with 2

F=7=> zero pad with 3,边界宽度是一个经验值,加上zero pad这一项是为了使输入图像和卷积后的特征图具有相同的维度,如:

输入为5*5*3,filter为3*3*3,在zero pad 为1,则加上zero pad后的输入图像为7*7*3,则卷积后的特征图大小为5*5*1((7-3)/1+1),与输入图像一样;



想必上述 两个博客已经使得小萌新们明白了卷积的计算过程。

参考知乎:https://www.zhihu.com/question/39022858

其实总结来说,可以从模板匹配的方面开始推导。我们可以知道,模板匹配的原理就是数据点乘模板,得到超过阈值的值的地方就是存在这个匹配对象的位置。

同样的,神经网络就是,多次跌代,找到一个合适的权重值组,也就是模板,可以用来判断是不是这个物体。

综上的卷积层的作用,简单来说,就是(另一种模板匹配)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个简单的带滑动图片、有大体框架并且可跳转的网页示例: ```html <!DOCTYPE html> <html> <head> <title>滑动图片网页示例</title> <style type="text/css"> body { margin: 0; padding: 0; font-family: Arial, sans-serif; } .header { background-color: #333; color: #fff; padding: 10px; text-align: center; } .container { max-width: 1200px; margin: 0 auto; padding: 20px; } .slider { position: relative; overflow: hidden; height: 500px; } .slides { display: flex; height: 100%; width: 500%; animation: slide 10s infinite; } .slide { flex: 20%; height: 100%; display: flex; align-items: center; justify-content: center; } .slide img { max-width: 100%; max-height: 100%; } @keyframes slide { 0% { transform: translateX(0); } 20% { transform: translateX(0); } 25% { transform: translateX(-20%); } 45% { transform: translateX(-20%); } 50% { transform: translateX(-40%); } 70% { transform: translateX(-40%); } 75% { transform: translateX(-60%); } 95% { transform: translateX(-60%); } 100% { transform: translateX(-80%); } } .nav { display: flex; justify-content: center; margin-top: 20px; } .nav button { background-color: #333; color: #fff; border: none; padding: 10px 20px; margin-right: 10px; cursor: pointer; } .nav button.active { background-color: #fff; color: #333; } </style> </head> <body> <header class="header"> <h1>滑动图片网页示例</h1> </header> <div class="container"> <div class="slider"> <div class="slides"> <div class="slide"><a href="#"><img src="https://picsum.photos/800/500?random=1" alt="Slide 1"></a></div> <div class="slide"><a href="#"><img src="https://picsum.photos/800/500?random=2" alt="Slide 2"></a></div> <div class="slide"><a href="#"><img src="https://picsum.photos/800/500?random=3" alt="Slide 3"></a></div> <div class="slide"><a href="#"><img src="https://picsum.photos/800/500?random=4" alt="Slide 4"></a></div> <div class="slide"><a href="#"><img src="https://picsum.photos/800/500?random=5" alt="Slide 5"></a></div> </div> </div> <div class="nav"> <button class="active" data-slide="1">1</button> <button data-slide="2">2</button> <button data-slide="3">3</button> <button data-slide="4">4</button> <button data-slide="5">5</button> </div> </div> <script type="text/javascript"> var slides = document.querySelectorAll('.slide'); var buttons = document.querySelectorAll('.nav button'); var currentSlide = 1; // Add click event listeners to buttons for (var i = 0; i < buttons.length; i++) { buttons[i].addEventListener('click', function() { // Remove active class from all buttons for (var j = 0; j < buttons.length; j++) { buttons[j].classList.remove('active'); } // Add active class to clicked button this.classList.add('active'); // Set current slide to clicked button's data-slide value currentSlide = this.getAttribute('data-slide'); }); } // Set initial active button buttons[currentSlide - 1].classList.add('active'); // Animate slides setInterval(function() { for (var i = 0; i < slides.length; i++) { slides[i].classList.remove('active'); } slides[currentSlide - 1].classList.add('active'); currentSlide++; if (currentSlide > slides.length) { currentSlide = 1; } // Update active button for (var i = 0; i < buttons.length; i++) { buttons[i].classList.remove('active'); } buttons[currentSlide - 1].classList.add('active'); }, 10000); </script> </body> </html> ``` 该示例使用 CSS3 动画实现了图片的滑动,同时添加了导航按钮,用户可以点击按钮跳转到对应的图片。你可以将示例代码复制到一个 HTML 文件中并在浏览器中打开它,以查看效果。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值