tensorflow AttributeError:'myNetwork'对象没有属性'conv3',但conv3就在那里

e0bqpujr  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(111)

我正在创建一个简单的tensorflow网络,如下所示:

from tensorflow.keras import Model
from tensorflow.keras.layers import Conv3D, Dense, Flatten
class myNetwork(Model):
    def __int__(self, dim1: int, dim2, dim3):
        super(myNetwork, self).__int__()
        self.conv3 = Conv3D(filters=128, kernel_size=[dim3, 5, 5], strides=1, input_shape=dim2, 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

字符串
但是,当使用以下命令运行代码时:

out = self.PredNet(myInput)


其中,

self.PredNet = myNetwork(dim1, dim2, dim3)


我得到的错误:
AttributeError:“myNetwork”对象没有属性“conv 3”。
这是非常混乱的,因为conv 3就在那里!

64jmpszr

64jmpszr1#

构造函数方法总是需要被称为__init__,而不是__int__或其他东西。在Python中,__init__方法是一个特殊的方法,当你创建一个类的示例时会自动调用。它用于初始化对象的属性并执行任何必要的设置。如果你给它命名其他东西,当你创建myNetwork类的示例时,它不会被调用。因此,属性self.conv3self.dense不会被初始化,所以当你试图访问它们时,你会得到“AttributeError”。

相关问题