卷积的计算 - numpy的实现 2

卷积的计算 - numpy的实现 2

flyfish

PyTorch计算
用于验证结果

import torchconv = torch.nn.Conv2d(in_channels=1, out_channels=1, kernel_size=2, stride=1)# 定义一个卷积核
W = torch.arange(1, 5).view(-1, 1, 2, 2).float()# 创建一个二维图像数据(4x4 像素)
image = torch.arange(1, 17).view(-1, 1, 4, 4).float()
print("input:",image)
conv.weight.data = W
conv.bias.data = torch.zeros([1])print("weight:",conv.weight.data)
print("bias:",conv.bias.data )r = conv(image)
print(r)

输出

input: tensor([[[[ 1.,  2.,  3.,  4.],[ 5.,  6.,  7.,  8.],[ 9., 10., 11., 12.],[13., 14., 15., 16.]]]])
weight: tensor([[[[1., 2.],[3., 4.]]]])
bias: tensor([0.])
tensor([[[[ 44.,  54.,  64.],[ 84.,  94., 104.],[124., 134., 144.]]]], grad_fn=<ConvolutionBackward0>)

计算输出大小的公式
简化版
o u t p u t = ( i n p u t + 2 ∗ p a d d i n g − k e r n e l ) / s t r i d e + 1 output= ({{input+ 2*padding - kernel} )/ {stride}}+1 output=input+2paddingkernel/stride+1

详细版
H o u t = ⌊ H i n + 2 × padding [ 0 ] − dilation [ 0 ] × ( kernel_size [ 0 ] − 1 ) − 1 stride [ 0 ] + 1 ⌋ H_{out} = \left\lfloor\frac{H_{in} + 2 \times \text{padding}[0] - \text{dilation}[0] \times (\text{kernel\_size}[0] - 1) - 1}{\text{stride}[0]} + 1\right\rfloor Hout=stride[0]Hin+2×padding[0]dilation[0]×(kernel_size[0]1)1+1
W o u t = ⌊ W i n + 2 × padding [ 1 ] − dilation [ 1 ] × ( kernel_size [ 1 ] − 1 ) − 1 stride [ 1 ] + 1 ⌋ W_{out} = \left\lfloor\frac{W_{in} + 2 \times \text{padding}[1] - \text{dilation}[1] \times (\text{kernel\_size}[1] - 1) - 1}{\text{stride}[1]} + 1\right\rfloor Wout=stride[1]Win+2×padding[1]dilation[1]×(kernel_size[1]1)1+1

使用纯numpy实现

import numpy as np
# 创建一个二维图像数据(4x4 像素)
image = np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]], dtype=np.float32)# 定义一个卷积核
kernel = np.array([[1, 2],[3, 4]], dtype=np.float32)image_height, image_width = image.shape
kernel_size = 2def output_size(image_dim, padding, kernel_size, stride):return (image_dim - kernel_size + 2 * padding)/stride + 1out_size = output_size(image_dim=4, kernel_size=2, padding=0, stride=1)
print(out_size)
out_size=int(out_size)
# 初始化输出图像
output_image = np.zeros((out_size, out_size), dtype=np.float32)# 用最普通的方式实现卷积操作,这样能看出来乘法和加法
for i in range(out_size):for j in range(out_size):output_image[i, j] = np.sum(image[i:i+kernel_size, j:j+kernel_size] * kernel)print(output_image)

输出

[[ 44.  54.  64.][ 84.  94. 104.][124. 134. 144.]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/226641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ray RLlib User Guides:模型,处理器和动作分布

Ray RLlib用户手册地址 默认模型配置设置 在下面的段落中&#xff0c;我们将首先描述RLlib自动构建模型的默认行为&#xff08;如果您没有设置自定义模型&#xff09;&#xff0c;然后深入了解如何通过更改这些设置或编写自己的模型类来自定义模型。 默认情况下&#xff0c;…

D33|动态规划!启程!

1.动态规划五部曲&#xff1a; 1&#xff09;确定dp数组&#xff08;dp table&#xff09;以及下标的含义 2&#xff09;确定递推公式 3&#xff09;dp数组如何初始化 4&#xff09;确定遍历顺序 5&#xff09;举例推导dp数组 2.动态规划应该如何debug 找问题的最好方式就是把…

软件测试面试八股文(答案解析+视频教程)

1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&#xff0c;可以实现跨平台&#xff0c;客户端零维护&#xff0c;维护成本低&#xff0c;但是个性化能力低&#xff0c;响应速度较慢。 C/S响应速度快&#xff0c;安全性强&#xff0c;一般应用于局域网中&#xf…

Yoast SEO Premium v21.7 Premium WordPress 插件Yoast +子插件介绍

什么是Yoast SEO&#xff1f; Yoast SEO 是 WordPress 的 SEO 插件&#xff0c;可帮助网站所有者针对搜索引擎优化他们的网站。该插件由 Joost de Valk 于 2008 年创建&#xff0c;旨在让每个人都能访问 SEO。今天&#xff0c;Yoast SEO 是全球数百万 WordPress 用户使用的最受…

如何对比云渲染平台优劣?到底哪一家好一些?

云渲染作为共享经济的一种体现&#xff0c;在强大计算资源共享的趋势下对个人用户和渲染团队的作品制作提供了巨大的便利。云渲染服务让CG艺术家无需自己投资昂贵的硬件设备&#xff0c;而可以通过网络提交渲染任务到云平台并利用其强大的共享计算资源&#xff0c;不但有效节约…

利用腾讯微搭平台连接MYSQL

首先&#xff0c;找到控制台 然后再控制台搜索&#xff1a;微搭 然后点击进入&#xff1a; 这里如果是第一次进入&#xff0c;他应该会提示要创建环境。 然后按照这个步骤&#xff1a; 然后进入这个页面&#xff0c;点击编辑器&#xff1a; 然后在这里搜索表格&#xff1a; 点…

Docker常用管理命令

Docker常用管理命令 一、Docker常用管理命令 docker ps 功能&#xff1a;查看正在运行的容器列表。示例&#xff1a;docker ps -a&#xff08;查看所有容器&#xff0c;包括已停止的容器&#xff09;。 docker start <container_id> 功能&#xff1a;启动一个已停止的容…

加州数据集介绍

包含四个城市&#xff1a;Fresno, Modesto, Oxnard, Stockton 数据的原遥感图像tif&#xff08;及地理信息.xml&#xff09;和标注数据csv是分开不同链接的&#xff0c;图像分辨率为 遥感原图像数据 文件解压后包含两种类型.tif和.tif.xml&#xff0c;后者是地理信息系统&am…

ros命名空间

文章目录 一、定义介绍二、原理解读1. 命名空间 一、定义介绍 在ROS中&#xff0c;命名空间是一种用于组织和区分节点、话题、服务和参数等资源的层次结构。命名空间使用斜线(/)作为分隔符&#xff0c;类似于文件系统中的路径。 二、原理解读 1. 命名空间 每个ROS节点都有一…

springboot应用,cpu高、内存高问题排查

前几天&#xff0c;排查了2个生产问题。一个cpu高&#xff0c;一个内存高。今天把解决过程整理一下 文章目录 1、cpu高问题排查1.1、获取栈日志1.2、分析栈日志 2、内存高问题排查2.1、dump日志分析2.2、堆内存使用情况2.3、解决方案2.4、arthas trace解决问题2.5、总结 1、cp…

DIY电脑装机机箱风扇安装方法

作为第一次自己diy一台电脑主机的我&#xff0c;在经历了众多的坑中今天来说一下如何安装机箱风扇的问题 一、风扇的数量 1、i3 xx50显卡 就用一个cpu散热风扇即可 2、i5 xx60 一个cpu散热风扇 一个风扇即可 3、i7 xx70 一个cpu散热 4个风扇即可 4、i9 xx80 就需要7个以…

初识SpringSecurity

目录 前言 特点 快速开始 导入依赖 运行项目 访问服务 权限控制 实现UserDetails接口 添加SecurityConfig配置类 测试接口DemoController 设置权限控制authorizeHttpRequests 结果分析 总结 前言 Spring Security是一个强大且高度可定制的身份验证和访问控制框架…

XXE利用的工作原理,利用方法及防御的案例讲解

XXE&#xff08;XML外部实体注入&#xff09;利用是一种网络安全攻击手段&#xff0c;其中攻击者利用XML解析器处理外部实体的方式中的漏洞。这种攻击主要针对的是那些使用XML来处理数据的应用程序&#xff0c;尤其是当这些应用程序没有正确限制外部实体的处理时。通过XXE利用&…

【后端卷前端3】

侦听器 监听的数据是 data()中的动态数据~响应式数据 <template><div><p>{{showHello}}</p><button click"updateHello">修改数据</button></div> </template><script>export default {name: "goodsTe…

使用Python实现对word的批量操作

Python在平时写写小工具真是方便快捷&#xff0c;Pyhon大法好。以下所有代码都是找了好多网上的大佬分享的代码按照自己的需求改的。 调用的库为Python-docx、win32com、PyPDF2、xlwings&#xff08;操作excel&#xff09;。 因为公司的任务要对上千个word文件进行批量操作&a…

威联通硬盘休眠后修改系统定时任务

按照网上一些教程&#xff0c;成功将威联通的机械硬盘设置了自动休眠。但是发现每天有多个整点硬盘会自动唤醒&#xff0c;怀疑是系统内置的定时任务触发了硬盘唤醒。 通过查看系统日志中事件和访问记录&#xff0c;判断出一些引发硬盘唤醒的自动任务&#xff0c;将这些定时任…

常见注册中心对比

特性 / 注册中心ConsulEtcdZooKeeperNacos服务发现DNS、HTTPWatcherWatcherHTTP/UDP/SDK健康检查多种方式&#xff08;HTTP、TCP 等&#xff09;监听健康状态变化心跳机制和 Watcher支持自定义健康检查一致性Raft 算法Raft 算法ZAB 协议Raft 算法性能适用于大规模部署读密集型操…

mediapipe 的姿态检测遇到的问题

简介&#xff1a; 最近在用mediapipe 进行人体姿态检测&#xff0c;当我初始化pose&#xff08;姿态检测对象&#xff09;时出现了错误&#xff1a;报错如下&#xff1a; Downloading model to D:\Anaconda\envs\taiji\lib\site-packages\mediapipe/modules/pose_landmark/pos…

Hdfs java API

1.在主机上启动hadoop sbin/start-all.sh 这里有一个小窍门&#xff0c;可以在本机上打开8088端口查看三台机器的连接状态&#xff0c;以及可以打开50070端口&#xff0c;查看hdfs文件状况。以我的主虚拟机为例&#xff0c;ip地址为192.168.198.200&#xff0c;所以可以采用下…

hadoop集群基础环境搭建

1.安装基础环境&#xff08;以centos7为例&#xff09; 1.1修改IP 创建4台虚拟机IP设置为192.168.154.4&#xff0c;192.168.154.5&#xff0c;192.168.154.6&#xff0c;192.168.154.7启动每台节点&#xff0c;在对应的节点路径"/etc/sysconfig/network-scripts…