CNN卷积神经网络Python实现

news/2024/4/25 20:06:36
import torch
from torch import nn# ①定义互相关运算
def corr2d(X, K):"""计算二维互相关运算。"""# 获取K的形状 行为h,列为wh, w = K.shape# 生成全0的矩阵,行为X的行减去h加上1,列为X的列减去w加上1Y = torch.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):# 两层循环,相乘,求和Y[i, j] = (X[i:i + h, j:j + w] * K).sum()# 返回Yreturn Y# ②实现二维卷积层
class Conv2D(nn.Module):def __init__(self, kernel_size):super().__init__()# 定义权重self.weight = nn.Parameter(torch.rand(kernel_size))# 定义偏移self.bias = nn.Parameter(torch.zeros(1))# 定义正向传播def forward(self, x):return corr2d(x, self.weight) + self.biasif __name__ == '__main__':# 定义模型conv2d = nn.Conv2d(1, 1, kernel_size=(1, 2), bias=False)# 定义XX = torch.ones((6, 8))X[:, 2:6] = 0# 定义KK = torch.tensor([[1.0, -1.0]])# 计算YY = corr2d(X, K)X = X.reshape((1, 1, 6, 8))Y = Y.reshape((1, 1, 6, 7))# 训练10轮for i in range(10):# 计算Y_hatY_hat = conv2d(X)# 损失l = (Y_hat - Y)**2# 梯度归零conv2d.zero_grad()# 后向传播l.sum().backward()# 优化函数 学习率=3e-2conv2d.weight.data[:] -= 3e-2 * conv2d.weight.gradif (i + 1) % 2 == 0:print(f'batch {i+1}, loss {l.sum():.3f}')# 经过10轮学习的权重为print(conv2d.weight.data.reshape((1, 2)))

结果

batch 2, loss 1.463
batch 4, loss 0.358
batch 6, loss 0.106
batch 8, loss 0.037
batch 10, loss 0.014
tensor([[ 1.0066, -0.9830]])Process finished with exit code 0

https://www.xjx100.cn/news/3091644.html

相关文章

SAP的一些当说不说的常识

ABAP中的WDA与FRMbopf restful和odata postman软件 SAP中MM模块相关 SAP 物料 移动类型 https://www.cnblogs.com/rainysblog/p/4133259.html T移动类型文本含义一般用途T-code101GR 收货直接收货工单入库,购买成品入库MIGO/CO11N102用于PO冲销的收货冲销直接…

手把手入门MO | 如何使用SeaTunnel将数据写入MatrixOne

1 概述 SeaTunnel 是一个分布式、高性能、易扩展的数据集成平台,专注于海量数据(包括离线和实时数据)同步和转化。MatrixOne 支持使用 SeaTunnel 从其他数据库同步数据,可以稳定高效地处理数百亿条数据。 本文档将介绍如何使用 …

配置中心

服务配置中心介绍 首先我们来看一下,微服务架构下关于配置文件的一些问题: 1. 配置文件相对分散。 在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散 在各个微服务中,不好统一配置和管理。 2. 配置文件无…

博主都在用的网站,一键制作电子杂志

​随着互联网的发展,越来越多的人开始使用电子杂志来展示自己的作品或宣传自己的品牌。而制作电子杂志的工具也越来越多,其中一些工具非常受欢迎,被许多博主使用。今天,我们就来介绍一款博主都在用的网站,它可以帮助你…

Java WebSocket 获取客户端 IP 地址

在开发 Web 应用程序时,我们通常需要获取客户端的 IP 地址用于日志记录、身份验证、限制访问等操作。当使用 WebSocket 协议时,我们可以使用 Java WebSocket API 来获取客户端的 IP 地址。 本文将介绍如何使用 Java WebSocket API 获取客户端 IP 地址&a…

4本期刊被踢!11月SCI/SSCI目录已更新

​2023年11月20日,科睿唯安更新了Web of Science核心期刊目录。 此次更新后SCIE期刊目录共包含9481本期刊,SSCI期刊目录共包含3551本期刊。此次SCIE & SSCI期刊目录更新,与上次更新(2023年10月)相比,共…

【excel技巧】单元格内的公式如何隐藏?

Excel文件中最重要的除了数据还有就是一些公式了,但是只要点击单元格,公式就能显示出来,如果不想别人看到公式应该如何设置呢?今天分享隐藏excel单元格数据的方法。 选中单元格,点击右键打开【设置单元格格式】&#x…

软件测试/人工智能丨视觉与图像识别在自动化测试领域的应用

视觉与图像识别在自动化测试领域的应用是自动化测试领域中的一项创新技术,它通过模拟人眼的视觉能力,识别和验证软件界面上的图像元素,从而实现更智能和全面的测试。以下是视觉与图像识别在自动化测试中的一些关键应用: 用户界面…