【问题标题】:TypeError: '_TupleWrapper' object is not callable when I run the object detection model ssdTypeError: '_TupleWrapper' 对象在我运行对象检测模型 ssd 时不可调用
【发布时间】:2020-09-19 07:40:50
【问题描述】:

我建立自己的 vgg 网络
然后我创建数据集然后运行火车

def run_train(dataset, num_epochs=2):
    start_time = time.perf_counter()

    model = VGGBase()

    for _ in tf.data.Dataset.range(num_epochs):
        for image,target in dataset: # (batch_size (N), 300, 300, 3)
            print(type(image), type(target))

这种类型是

<class 'tensorflow.python.framework.ops.EagerTensor'> <class 'tensorflow.python.ops.ragged.ragged_tensor.RaggedTensor'>

然后我在

上收到以下错误

文件“/home/jake/Gits/ssd_tensorflow/model.py”,第 56 行,调用中 x = self.conv1_1(x)# (N, 64, 300, 300) TypeError: '_TupleWrapper' 对象不可调用

类 VGGBase(模型): def 初始化(自我): super(VGGBase,self).init() self.padding_1 = tf.keras.layers.ZeroPadding2D(padding=(1, 1)) # 把它放在你的转换层之前 self.conv1_1 = tf.keras.layers.Conv2D(3, kernel_size=3,padding='same',strides=1, activation='relu'), self.conv1_2 = tf.keras.layers.Conv2D(64, kernel_size=3, padding='same',strides=1,activation='relu'), self.pool1 = tf.keras.layers.MaxPool2D(2,2),

    self.conv2_1  =  tf.keras.layers.Conv2D(128, kernel_size=3, padding='same',strides= 1,activation='relu'),
    self.conv2_2 = tf.keras.layers.Conv2D(128, kernel_size=3,padding='same',strides= 1,activation='relu'),
    self.pool2 = tf.keras.layers.MaxPool2D(2,2),

    self.conv3_1 =  tf.keras.layers.Conv2D(256, kernel_size=3, padding='same',strides= 1,activation='relu'),
    self.conv3_2 =  tf.keras.layers.Conv2D(256, kernel_size=3, padding='same',strides= 1,activation='relu'),
    self.conv3_3 =  tf.keras.layers.Conv2D(256, kernel_size=3, padding='same',strides= 1,activation='relu'),
    self.pool3 = tf.keras.layers.MaxPool2D(2,2),

    self.conv4_1 = tf.keras.layers.Conv2D(512, kernel_size=3, padding='same', strides=1,activation='relu'),
    self.conv4_2 = tf.keras.layers.Conv2D(512, kernel_size=3, padding='same', strides=1,activation='relu'),
    self.conv4_3 = tf.keras.layers.Conv2D(512, kernel_size=3, padding='same', strides=1,activation='relu'),
    self.pool4 = tf.keras.layers.MaxPool2D(2, 2),

    self.conv5_1 = tf.keras.layers.Conv2D(512, kernel_size=3, padding='same', strides=1,activation='relu'),
    self.conv5_2 = tf.keras.layers.Conv2D(512, kernel_size=3, padding='same', strides=1,activation='relu'),
    self.conv5_3 = tf.keras.layers.Conv2D(512, kernel_size=3, padding='same', strides=1,activation='relu'),
    self.pool5 = tf.keras.layers.MaxPool2D(2, 2),

    self.padding6 = tf.keras.layers.ZeroPadding2D(padding=(6, 6))  # put this before your conv layer
    self.conv6 = tf.keras.layers.Conv2D(1024, kernel_size=3, padding='same',dilation_rate=6,activation='relu') # atrous convolution
    self.conv7 = tf.keras.layers.Conv2D(1024, kernel_size=1,activation='relu')
    #self.load_weights()
def call(self,x):
    x = self.padding_1(x)
    x = self.conv1_1(x)# (N, 64, 300, 300)
    x = self.conv1_2(x)# (N, 64, 300, 300)
    x = self.pool1(x) # (N, 64, 150, 150)

    x = self.conv2_1(x) # (N, 128, 150, 150)
    x = self.conv2_2(x) # (N, 128, 150, 150)
    x = self.pool2(x)# (N, 128, 75, 75)

    x = self.conv3_1(x) # (N, 256, 75, 75)
    x = self.conv3_2(x)# (N, 256, 75, 75)
    x = self.conv3_3(x)# (N, 256, 75, 75)
    x = self.pool3(x) #(N, 256, 38, 38), it would have been 37 if not for ceil_mode = True

    x = self.conv4_1(x)# (N, 512, 38, 38)
    x = self.conv4_2(x)# (N, 512, 38, 38)
    x = self.conv4_3(x)# (N, 512, 38, 38)
    conv4_3_feats = x# (N, 512, 38, 38)
    x = self.pool4(x)# (N, 512, 19, 19)

    x = self.conv5_1(x) # (N, 512, 19, 19)
    x = self.conv5_2(x) # (N, 512, 19, 19)
    x = self.conv5_3(x) # (N, 512, 19, 19)
    x = self.pool5(x) # (N, 512, 19, 19), pool5 does not reduce dimensions

    x = self.padding6(x)
    x = self.conv6(x) # (N, 1024, 19, 19)
    x = self.conv7(x) # (N, 1024, 19, 19)
    conv7_feats = x

    return conv4_3_feats, conv7_feats

【问题讨论】:

    标签: python tensorflow computer-vision tensorflow2.0 vgg-net


    【解决方案1】:

    删除模型(VGGBase)中的尾随逗号,应该没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 2017-06-17
      • 2014-09-21
      • 2011-05-30
      相关资源
      最近更新 更多