You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Keras创建模型数组时遇AttributeError错误,求排查方案

问题分析与解决方案

这个错误的根源很明确:你在循环创建模型时,第一个模型的卷积核尺寸被设置成了0,这直接导致了后续的张量操作异常。

看你的代码,循环变量i从0开始,kernel_size=i*3,当i=0时,kernel_size=0,而Keras的Conv2D层要求卷积核尺寸必须是大于0的正整数(比如3x3、5x5这类常用值)。用0作为卷积核尺寸会创建一个无效的层,对应的权重张量会变成异常的Tensor对象,当优化器尝试更新这些权重时,就会触发'Tensor' object has no attribute 'assign'的错误。

修复步骤

只需要调整kernel_size的计算逻辑,确保它始终是有效的正整数即可,比如把循环里的计算改成(i+1)*3,这样第一个模型用3x3卷积核,第二个用6x6,以此类推:

for i in range(num_models):
    mod = self._build_model(
        num_classes=num_classes, input_shape=input_shape, kernel_size=(i+1)*3)
    self.models.append(mod)

或者如果你希望从3开始按步长3递增,也可以写成3 + i*3,效果是一样的。

额外说明

卷积核的尺寸是卷积操作的核心参数之一,必须满足:

  • 是正整数(或正整数组成的元组)
  • 不能大于输入特征图的尺寸(否则会导致卷积后输出尺寸为负,同样会报错)
    建议你根据输入图像的尺寸选择合适的卷积核大小,比如输入是28x28的MNIST图像,用3x3、5x5都是安全的选择。

内容的提问来源于stack exchange,提问作者Shamoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:35:50