ecursionError: maximum recursion depth exceeded while calling a Python object

在 Python 中,`RecursionError: maximum recursion depth exceeded` 错误通常发生在一个函数递归调用自身太多次,超出了 Python 默认的递归深度限制时。Python 默认的递归深度限制是比较低的,以避免无限递归导致的栈溢出。

在你的代码中,这个错误可能发生在 `_get_fc_input_size` 方法里。这个方法在构造函数中被调用,并且它试图创建一个 `AlexNet` 实例来计算全连接层的输入尺寸。但是,由于 `_get_fc_input_size` 方法本身在 `AlexNet` 类定义中,这将导致无限递归调用:

def _get_fc_input_size(self, shape):model = AlexNet()  # 这里创建了一个新的 AlexNet 实例,它又将调用 _get_fc_input_size 方法model.eval()with torch.no_grad():x = torch.randn(shape)x = model.conv(x)return x.view(x.size(0), -1).size(1)

要解决这个问题,你应该避免在 `_get_fc_input_size` 方法中创建新的 `AlexNet` 实例。相反,你应该使用当前实例的 `conv` 属性来计算输出尺寸。以下是修正后的代码:

class AlexNet(nn.Module):def __init__(self):super(AlexNet, self).__init__()# ... [省略其他部分] ...# 计算全连接层输入大小self.fc_input_size = self._get_fc_input_size()self.fc = nn.Sequential(# ... [省略其他部分] ...)def forward(self, img):feature = self.conv(img)feature = feature.view(img.size(0), -1)  # 展平特征图output = self.fc(feature)return outputdef _get_fc_input_size(self):# 使用当前实例的 conv 属性来计算输出尺寸x = torch.randn(1, 1, 28, 28)  # 假设输入图像尺寸是 (1, 28, 28)x = self.conv(x)# 计算展平后的特征数量return x.view(-1).size(0)# 创建模型
model = AlexNet().to(device)
# ... [省略其他部分] ...

在这个修正中,`_get_fc_input_size` 方法不再创建新的 `AlexNet` 实例,而是直接使用 `self.conv` 来获取卷积层的输出,然后计算这个输出在展平后的大小。这样,递归调用的问题就解决了。

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

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

相关文章

考虑风光场景生成的电动汽车并网优化调度【遗传算法】【IEEE33】

目录 主要内容 部分代码 部分结果 下载链接 主要内容 程序主要内容是考虑风光场景生成的电动汽车并网优化调度,采用的方法如下所述: ①采用蒙特卡洛方法,结合copula函数以及fuzzy-kmeans,获取6个典型风光出力场景&…

Linux C语言:输入输出(printf scanf)

一、数据输出 1、C语言I/O操作由函数实现 #include <stdio.h> 2、字符输出函数 格式: int putchar( int c ) 参数: c为字符常量、变量或表达式 功能&#xff1a;把字符c输出到显示器上 返值&#xff1a;putchar函数的返回值是参数的ASCLL码值&#xff1b; #inclu…

深入理解交叉熵损失CrossEntropyLoss - 乘积符号在似然函数中的应用

深入理解交叉熵损失CrossEntropyLoss - 乘积符号在似然函数中的应用 flyfish 乘积符号prod&#xff0c;通常写作 ∏ \prod ∏&#xff0c;它类似于求和符号 ∑ \sum ∑&#xff0c;但它表示的是连续乘积。我们来看一下这个符号的具体用法和例子。 乘积符号 ∏ \prod ∏ …

1.奖牌的数量

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/447 题目描述 小爱获得了 𝑎a 枚金牌,…

领导者在沟通中最容易犯的错误

本文讨论了领导者在沟通过程中如何避免成为传声筒&#xff0c;通过筛选、处理和总结信息&#xff0c;在向上、向下沟通时保持相关性和真实性&#xff0c;提高沟通效率和效果。原文: The Dumbest Mistake Leaders Make in Communication 中层管理者作为高层领导、下属团队和其他…

Float浮动

Float浮动 CSS中float属性会使元素浮动&#xff0c;使元素向左或向右移动&#xff0c;直到它的外边缘碰到包含框或另一个浮动框的边框为止。 实例 元素的水平方向浮动&#xff0c;意味着元素只能左右移动而不能上下移动。使用float意味着使用块布局&#xff0c;其会在displa…

基于springboot的酒店管理系统源码数据库

时代的发展带来了巨大的生活改变&#xff0c;很多事务从传统手工管理转变为自动管理。自动管理是利用科技的发展开发的新型管理系统&#xff0c;这类管理系统可以帮助人完成基本的繁琐的反复工作。酒店是出门的必需品&#xff0c;无论出差还是旅游都需要酒店的服务。由于在旺季…

Vue3中的常见组件通信之`$refs`、`$parent`

Vue3中的常见组件通信之$refs、$parent 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-mod…

智能合约中代理漏洞

合约代理漏洞 代理模式在智能合约开发中非常常见&#xff0c;尤其是在升级和模块化设计中。代理合约&#xff08;Proxy Contract&#xff09;通常用于分离逻辑实现与合约的外部接口&#xff0c;允许在不改变接口的情况下升级或替换底层实现。然而&#xff0c;如果代理合约的初…

Vue数据动态代理机制的实现

Object.defineProperty() &#xff08;1&#xff09;这个方法是ES5新增的 &#xff08;2&#xff09;这个方法的作用是&#xff1a;给对象新增属性&#xff0c;或者设置对象原有的属性 &#xff08;3&#xff09;用法&#xff1a;Object.defineProperty(给哪个对象新增属性,‘…

深入解析:MySQL连接超时问题排查与优化策略

引言 ​ 在现代企业应用中&#xff0c;数据库的稳定性和响应速度是保证业务连续性的关键。MySQL作为广泛使用的数据库系统&#xff0c;其连接超时问题可能成为性能瓶颈&#xff0c;影响用户体验和业务效率。本文将深入探讨MySQL连接超时的原因、影响以及优化策略。 超时配置详…

【虚拟现实】一、AR与VR的基本原理

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08;VR&#xff09;技术已经从科幻小说走入现实&#xf…

UR机器人通信汇总

文章目录 一、概述二、UR机器人通信2.1UR通信协议2.2 UR通信端口 三、UR机器人通信端口类型3.1 Modbus TCP端口&#xff08;502端口&#xff09;3.2 Dashboard端口&#xff08;29999端口&#xff09;3.3 上位机编程端口&#xff08;30001/30002/30003端口&#xff09;3.3.1 URS…

linux本地搭建dns

不需要图形化界面 使用的是dnsmasq&#xff0c;配置简单 1.安装 deb系列linux apt-get install dnsmasqrhat系列linux yum install dnsmasq2.编辑配置文件 vi /etc/dnsmasq.conf设置主dns服务器&#xff0c;比如现有公用的的114.114.114.114 8.8.8.8这类的 server8.8.8.8…

MyBatis 延迟加载,一级缓存,二级缓存设置

MyBatis不仅提供了一级缓存和二级缓存机制&#xff0c;还支持延迟加载&#xff08;Lazy Loading&#xff09;&#xff0c;以进一步优化性能。 1. 延迟加载&#xff08;Lazy Loading&#xff09; 延迟加载是在需要时才加载数据&#xff0c;而不是在查询时立即加载所有相关数据。…

字节开源Hyper-SD模型,超越SDXL-Lightning,单步生成SOTA级图像

前言 近年来&#xff0c;扩散模型&#xff08;Diffusion Model&#xff0c;DM&#xff09;在图像生成领域取得了显著进展&#xff0c;展现出前所未有的图像质量和多样性。然而&#xff0c;扩散模型的训练和推理过程通常需要多个步骤&#xff0c;这限制了其在实际应用中的效率。…

注册小程序

每个小程序都需要在 app.js 中调用 App 方法注册小程序实例&#xff0c;绑定生命周期回调函数、错误监听和页面不存在监听函数等。 详细的参数含义和使用请参考 App 参考文档 。 整个小程序只有一个 App 实例&#xff0c;是全部页面共享的。开发者可以通过 getApp 方法获取到全…

172.二叉树:左叶子之和(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr, right(nullptr) {}* Tree…

代码随想录算法训练营第32天(py)| 贪心 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

122.买卖股票的最佳时机II 力扣链接 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返…

python学习 - 在线 百度语音API 播报 测试案例分析

在进行百度语音API的播报测试时&#xff0c;可以遵循以下步骤来确保测试的顺利进行。 1. 注册百度语音账号 访问百度语音开发平台&#xff1a;ai.baidu.com/tech/speech注册成为百度开发者&#xff0c;创建个人或企业账号 2. 创建应用并获取API密钥 在控制台中&#xff0c;…