AttributeError:'myNetwork'对象无'conv3'属性问题求助
问题解决:AttributeError: 'myNetwork' object has no attribute 'conv3'
错误根源是构造函数拼写错误:你把Python类的构造函数__init__写成了__int__。
Python中,类实例化时会自动调用双下划线包裹的__init__方法初始化属性,而__int__是用于对象转整数的特殊方法,不会在实例化阶段执行。这直接导致你定义的self.conv3、self.dense等属性根本没被创建,调用网络时自然找不到conv3。
修正后的代码
from tensorflow.keras import Model from tensorflow.keras.layers import Conv3D, Dense, Flatten import tensorflow as tf # 补充导入tf,原代码用了@tf.function但未导入 class myNetwork(Model): def __init__(self, dim1: int, dim2, dim3): # 把__int__修正为__init__ super(myNetwork, self).__init__() # 同步修正super的调用方法 # Conv3D的input_shape可省略,Keras会通过输入张量自动推断形状 self.conv3 = Conv3D(filters=128, kernel_size=[dim3, 5, 5], strides=1, padding='same') self.dense = Dense(dim1, activation="linear") self.flatten = Flatten() @tf.function def call(self, x): h1 = self.conv3(x) h2 = self.flatten(h1) out = self.dense(h2) return out
额外注意点
- 原代码使用
@tf.function但未导入tensorflow,需补充import tensorflow as tf - 子类化Model时,Conv3D的
input_shape无需显式指定,Keras会根据输入自动推断形状,避免因dim2格式错误引发新问题 - Python3中super调用可简化为
super().__init__(),无需显式传入类名和self
内容的提问来源于stack exchange,提问作者Lucifer
相关产品推荐
相关产品推荐

