用什么技术做网站怎么简化Wordpress欢迎页面

张小明 2026/1/7 15:04:19
用什么技术做网站,怎么简化Wordpress欢迎页面,wordpress 连接数据库,红河做网站引言 前序学习进程中#xff0c;已经简单学习了全连接层的概念#xff0c;知晓全连接层先把数据展平#xff0c;然后使用激活函数运算数据#xff0c;最后将输出结果直接传递给下一层。 实际上全连接层就是激活函数发挥功能的层#xff0c;通过激活函数可以引入非线性或者…引言前序学习进程中已经简单学习了全连接层的概念知晓全连接层先把数据展平然后使用激活函数运算数据最后将输出结果直接传递给下一层。实际上全连接层就是激活函数发挥功能的层通过激活函数可以引入非线性或者仅保留线性。在最近的学习中卷积运算的矩阵扩充和改变卷积核移动步长操作已经相对熟练为此我们把上述内容结合一下对卷积运算后的结果矩阵稍作运算把负值改为0正值都保留。非负值操作在PyTorch里面取非负值可以直接调用torch.max()函数学习的官方链接为torch.max。torch.max(input,*,out)原理非常简单给定输入张量input直接返回所有输入张量里面的最大值。维度最值计算要想实现数据非负的转变就把最小值设为0.0比0小的全部都会改换成0.0比0.0大的都会保持原值。由于我们的计算结果基本都是float.32这样的浮点数所以把最小值设置为浮点数有利于保持数据稳定。这里给一个简单示例importtorch# 生成5行5列的随机矩阵符合标准正态分布atorch.randn(5,5)print(a,a)# 输出torch.max()函数对比效果print(torch.max(a, 1)\n,torch.max(a,1))这里先生成一个5行5列的标准正态分布随机数矩阵然后进行非负性运算获得的输出效果为根据输出可以看到每一行的最大值都被挑选出来并且还多了一行indices用来记录每一行中最大值所在的列位置。我们最开始可能会以为所有数是和1比大小但实际上是每一行内部元素自己比大小1代表列这个维度这是torch.max(a,1)中1的本意。元素最值计算那该如何让元素和1比大小这就要仔细观察我们是在张量里面定义数据1不是张量所以要对代码稍作改变先把1转换为张量torch.tensor(1.0)importtorch# 生成5行5列的随机矩阵符合标准正态分布atorch.randn(5,5)print(a,a)# 输出torch.max()函数对比效果print(torch.max(a, 1)\n,torch.max(a,1))ttorch.tensor(1.0)print(torch.max(a, torch.tensor(1.0))\n,torch.max(a,t))次时代码的输出效果为很显然小于1.0的元素值都被强制赋值1.0其余元素保持原值卷积元素那结果非负运算在上述讨论的基础上直接进行卷积运算结果的非负运算就比较简单直观。只需要先定义一个和原始计算结果一样大小的全0矩阵然后开展非负运算就可以。核心代码# 初始化全0矩阵使其和卷积计算的结果矩阵大小一致relu_manualtorch.zeros_like(padded_output_cal_tensor)foriinrange(padded_output_cal_tensor.shape[0]):forjinrange(padded_output_cal_tensor.shape[1]):relu_manual[i,j]torch.max(torch.tensor(0.0),padded_output_cal_tensor[i,j])print(ReLu输出)print(relu_manual)此时的运算效果为实际上上述代码是为了逐行展示计算过程也可以直接对比整个矩阵让代码更简洁# 初始化全0矩阵使其和卷积计算的结果矩阵大小一致#relu_manual_storch.zeros_like(padded_output_cal_tensor)relu_manual_storch.max(torch.tensor(0.0),padded_output_cal_tensor)print(ReLu输出)print(relu_manual_s)实际上只用了一行代码就完成了对比。上述代码中的第一行被注释掉是因为确实没有用进行torch.max()对比时会自动给relu_manual_s创造一个和padded_output_cal_tensor等大的矩阵。此时的输出效果和之前一样这里给出两种代码写法输出的对比效果此时的完整代码为importtorch# 1. 定义原始输入3通道5×5和卷积核1边缘检测核input_tensortorch.tensor([# 输入通道1R5×5[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]],# 输入通道2G5×5[[26,27,28,29,30],[31,32,33,34,35],[36,37,38,39,40],[41,42,43,44,45],[46,47,48,49,50]],# 输入通道3B5×5[[51,52,53,54,55],[56,57,58,59,60],[61,62,63,64,65],[66,67,68,69,70],[71,72,73,74,75]]],dtypetorch.float32)# 形状(3,5,5)# 输出原始通道的形状input_tensor_channels,input_tensor_h,input_tensor_winput_tensor.shapeprint(input_tensor_channels,input_tensor_channels)print(input_tensor_h,input_tensor_h)print(input_tensor_w,input_tensor_w)# 卷积核1边缘检测核3个子核每个3×3kernel1torch.tensor([[[1,0,-1],[1,0,-1],[1,0,-1]],# 子核1R通道[[1,0,-1],[1,0,-1],[1,0,-1]],# 子核2G通道[[1,0,-1],[1,0,-1],[1,0,-1]]# 子核3B通道],dtypetorch.float32)# 形状(3,3,3)# 输出卷积核的形状kernel1_channels,kernel1_h,kernel1_wkernel1.shapeprint(kernel1_channels,kernel1_channels)print(kernel1_h,kernel1_h)print(kernel1_w,kernel1_w)# 通过循环自动计算卷积值# 定义步长为1stride1# 定义卷积运算后的输出矩阵大小out_h(input_tensor_h-kernel1_h)//stride1out_w(input_tensor_w-kernel1_w)//stride1# 为避免对原始矩阵造成破坏新定义一个量来完全复制原始矩阵input_cal_tensorinput_tensor# 输出矩阵里面是所有卷积运算的效果这个矩阵比原始矩阵小先定义为纯0矩阵output_cal_tensortorch.zeros((out_h,out_w),dtypetorch.float32)# 循环计算foriinrange(out_h):forjinrange(out_w):# 对原始矩阵取块进行计算这里定义了取块的起始行in_h_starti*stride# 取块的末行in_h_endin_h_startkernel1_h# 取块的起始列in_w_startj*stride# 取块的末列in_w_endin_w_startkernel1_w# 这是取到的块input_patchinput_cal_tensor[:,in_h_start:in_h_end,in_w_start:in_w_end]# 定义一个空列表output_cal存储数据output_cal[]forkinrange(input_tensor_channels):# k代表了通道数因为每个通道都要进行卷积运算# 因此需要先得到单通道的计算效果然后把它们储存在列表中output_channel(input_patch[k]*kernel1[k]).sum()#print(input_patch[,k,],input_patch[k])#print(output_patch[, k, ], kernel1[k])# 计算结果储存在列表中output_cal.append(output_channel)# 把通道效果叠加后保存到卷积输出矩阵# 这里有3层第一层是每一个子卷积核和原始矩阵的每一个通道进行卷积运算# 第二层是将第一层的卷积运算值按照顺序排放在列表output_cal中# 第三层再将列表中获得数据直接叠加获得当下卷积运算的总值# 综合起来卷积核和每一通道内的对应块对位相乘然后全部求和输出给当前记录卷积值的矩阵# 由于每一个i和j都会对应k个通道所以使用了3层循环来表达output_cal_tensor[i,j]sum(output_cal)#print(output_cal_tensor[, i, j, ], output_cal_tensor[i, j])print(output,output_cal_tensor)# 扩充原始矩阵周围补一圈0padding1padded_hinput_tensor_h2*padding padded_winput_tensor_w2*padding padded_input_tensortorch.zeros((input_tensor_channels,padded_h,padded_w),dtypetorch.float32)padded_input_tensor[:,padding:-padding,padding:-padding]input_tensorprint(padded_input_tensor)# 对扩充后的矩阵卷积运算# 计算卷积矩阵大小padded_out_h(padded_h-kernel1_h)//stride1padded_out_w(padded_w-kernel1_w)//stride1# 为避免对原始矩阵造成破坏新定义一个量来完全复制原始矩阵padded_input_cal_tensorpadded_input_tensor# 输出矩阵里面是所有卷积运算的效果这个矩阵比原始矩阵小先定义为纯0矩阵padded_output_cal_tensortorch.zeros((padded_out_h,padded_out_w),dtypetorch.float32)foriinrange(padded_out_h):forjinrange(padded_out_w):# 对原始矩阵取块进行计算这里定义了取块的起始行in_h_starti*stride# 取块的末行in_h_endin_h_startkernel1_h# 取块的起始列in_w_startj*stride# 取块的末列in_w_endin_w_startkernel1_w# 这是取到的块input_patchpadded_input_cal_tensor[:,in_h_start:in_h_end,in_w_start:in_w_end]# 定义一个空列表output_cal存储数据output_cal[]forkinrange(input_tensor_channels):# k代表了通道数因为每个通道都要进行卷积运算# 因此需要先得到单通道的计算效果然后把它们储存在列表中output_channel(input_patch[k]*kernel1[k]).sum()#print(input_patch[,k,],input_patch[k])#print(output_patch[, k, ], kernel1[k])# 计算结果储存在列表中output_cal.append(output_channel)# 把通道效果叠加后保存到卷积输出矩阵# 这里有3层第一层是每一个子卷积核和原始矩阵的每一个通道进行卷积运算# 第二层是将第一层的卷积运算值按照顺序排放在列表output_cal中# 第三层再将列表中获得数据直接叠加获得当下卷积运算的总值# 综合起来卷积核和每一通道内的对应块对位相乘然后全部求和输出给当前记录卷积值的矩阵# 由于每一个i和j都会对应k个通道所以使用了3层循环来表达padded_output_cal_tensor[i,j]sum(output_cal)#print(padded_output_cal_tensor[, i, j, ], padded_output_cal_tensor[i, j])print(padded_output,padded_output_cal_tensor)# 使卷积计算的负值为0正值不变# 初始化全0矩阵使其和卷积计算的结果矩阵大小一致relu_manualtorch.zeros_like(padded_output_cal_tensor)foriinrange(padded_output_cal_tensor.shape[0]):forjinrange(padded_output_cal_tensor.shape[1]):relu_manual[i,j]torch.max(torch.tensor(0.0),padded_output_cal_tensor[i,j])print(ReLu输出)print(relu_manual)# 简洁代码# 初始化全0矩阵使其和卷积计算的结果矩阵大小一致#relu_manual_storch.zeros_like(padded_output_cal_tensor)relu_manual_storch.max(torch.tensor(0.0),padded_output_cal_tensor)print(ReLu输出)print(relu_manual_s)细节说明torch.max()函数包括维度最值和元素最值两种写法虽然简单但一定要区分比较的元素属性。总结学习了卷积运算结果的非线性处理中的非负性操作。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

石家庄 网站开发高端网站搭建

uvloop高性能异步编程实用技巧与避坑指南 【免费下载链接】uvloop Ultra fast asyncio event loop. 项目地址: https://gitcode.com/gh_mirrors/uv/uvloop 在现代Python异步编程领域,uvloop作为一款超快速的事件循环实现,为开发者提供了显著的性能…

张小明 2026/1/5 13:23:39 网站建设

网站视频插件怎么做百度seo优化多少钱

分布式系统节点发现机制终极指南:架构设计与生产实践 【免费下载链接】ignite Apache Ignite 项目地址: https://gitcode.com/gh_mirrors/ignite16/ignite 在当今的分布式计算环境中,节点发现机制是构建可靠、高性能集群的基石。Apache Ignite作为…

张小明 2026/1/3 0:22:32 网站建设

培训网站视频不能拖动怎么办网站上线之后要做的工作

在这个 AI 爆发的时代,如何快速将一个创意转化为可落地的应用?本文将带你通过字节跳动旗下的 AI 开发平台 Coze (扣子) 和前端框架 Vue3,一步步实现一个有趣的“冰球宠物拟人化”项目。即使你是零基础的小白,跟着这篇文章也能独立…

张小明 2026/1/3 0:24:04 网站建设

做网站约需要多少钱陕西省住房城乡建设厅网站管理中心

从学术到工业:大模型落地必须跨越的那道坎——推理优化 在今天的AI服务场景中,用户已经习惯了“秒级响应”甚至“毫秒级反馈”。当你对语音助手说一句话,它立刻理解并回应;当你打开推荐页面,内容瞬间完成个性化加载——…

张小明 2026/1/3 17:39:08 网站建设

兼职做平面模特网站网站维护是谁做的

显卡驱动问题就像电脑的"隐形破坏者"!😱 你是否遇到过游戏闪退、画面撕裂、系统蓝屏等烦心问题?这些问题往往源于陈旧的驱动残留。今天,我将带你深度揭秘Display Driver Uninstaller(DDU)这个专业…

张小明 2026/1/3 6:42:14 网站建设

seo优化网站排名wordpress 海淘主题下载

SVG 椭圆详解 SVG(可缩放矢量图形)是网页设计中的一个重要工具,它允许开发者创建高质量、可缩放的图形,这些图形在网页中可以无缝地适应不同的分辨率。在SVG图形中,椭圆是一个非常基础的图形元素,本文将详细介绍SVG椭圆的相关知识,包括其语法、属性以及应用场景。 SVG…

张小明 2026/1/3 13:53:31 网站建设