AttributeError:启用急切执行时,Tensor.op没有意义

时间:2020-06-02 21:07:22

标签: keras deep-learning conv-neural-network tensorflow2.0 resnet

我正在尝试从头开始实现RESNET 50。累积所有层后,我将其称为tf.keras.Model。 它会给出错误 AttributeError:启用急切执行时,Tensor.op没有意义。。为了进行测试,我输入了一个4-D张量。 conv_diff_size conv_same_size 是两个具有con2d和批处理规范化层的自定义块。我正在Google Colab上使用TensorFlow 2..0。

def ResNet50(inputs, classes):
  X = tf.keras.layers.Conv2D(64, kernel_size = (7,7), strides=2, padding='valid', data_format='channels_last', input_shape = inputs.shape)(inputs)
  X = tf.keras.layers.BatchNormalization(axis=-1, momentum=0.9)(X)
  X = tf.keras.layers.MaxPool2D(pool_size=(3, 3), strides=2)(X)

  X = conv_diff_size(X, [64, 64, 256])
  X = conv_same_size(X, [64, 64, 256])
  X = conv_same_size(X, [64, 64, 256])

  X = conv_diff_size(X, [128, 128, 512])
  X = conv_same_size(X, [128, 128, 512])
  X = conv_same_size(X, [128, 128, 512])
  X = conv_same_size(X, [128, 128, 512])

  X = conv_diff_size(X, [256, 256, 1024])
  X = conv_same_size(X, [256, 256, 1024])
  X = conv_same_size(X, [256, 256, 1024])
  X = conv_same_size(X, [256, 256, 1024])
  X = conv_same_size(X, [256, 256, 1024])

  X = conv_diff_size(X, [512, 512, 2048])
  X = conv_same_size(X, [512, 512, 2048])
  X = conv_same_size(X, [512, 512, 2048])
  X = conv_same_size(X, [512, 512, 2048])
  X = conv_same_size(X, [512, 512, 2048])
  X = conv_same_size(X, [512, 512, 2048])

  X = tf.keras.layers.AveragePooling2D(pool_size=(2, 2), name = 'avg_pool')(X)
  X = tf.keras.layers.Flatten()(X)
  X = tf.keras.layers.Dense(classes, activation='relu')(X)

  model = tf.keras.Model(inputs=X, outputs = X)
  return model

2 个答案:

答案 0 :(得分:0)

如果您忘记先编译模型,有时会发生这种情况。在开始训练之前,请确保您正在跑步 model.compile(...)

答案 1 :(得分:0)

如果您正在交互式 Python 环境中逐步测试您的脚本(例如,在编译或训练后更改层设计),请尝试删除所有变量并重新开始。