我正在创建一个简单的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就在那里!
1条答案
按热度按时间64jmpszr1#
构造函数方法总是需要被称为
__init__
,而不是__int__
或其他东西。在Python中,__init__
方法是一个特殊的方法,当你创建一个类的示例时会自动调用。它用于初始化对象的属性并执行任何必要的设置。如果你给它命名其他东西,当你创建myNetwork
类的示例时,它不会被调用。因此,属性self.conv3
和self.dense
不会被初始化,所以当你试图访问它们时,你会得到“AttributeError”。