NameError:名称“模型未定义”-如何解决此问题?

问题描述 投票:0回答:3

我正在尝试通过迁移学习对 2 个类别进行分类。预处理数据后,我想应用“InceptionResNetV2”。我想删除这个 Keras 应用程序的最后一层并想添加一个层。 我为此编写了以下脚本:

irv2 = tf.keras.applications.inception_resnet_v2.InceptionResNetV2()
irv2.summary()

x = irv2.layers[-1].output
x = Dropout(0.25)(x)
predictions = Dense(2, activation='softmax')(x)

model = Model(inputs=mobile.input, outputs=predictions)

然后出现错误:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-40-911de74d9eaf> in <module>()
      5 predictions = Dense(2, activation='softmax')(x)
      6 
----> 7 model = Model(inputs=mobile.input, outputs=predictions)

NameError: name 'Model' is not defined

如果有其他方法可以删除最后一层并添加新层(

predictions = Dense(2, activation='softmax')
)请告诉我。

这是我的完整代码

keras conv-neural-network keras-layer transfer-learning
3个回答
4
投票

您可以使用此代码片段来定义您的迁移学习模型。

在这里,我们使用在 imagenet 数据集上训练的权重,并忽略最后一层(用于训练 imagenet 数据集中 1000 个类的 1000 个神经元层)并添加我们的自定义层。在此示例中,我们添加一个 GAP 层,然后添加一个用于二元分类的密集层。

 from tensorflow import keras

 input_layer = keras.layers.Input(shape=(224, 224, 3))
 irv2 = keras.applications.Xception(weights='imagenet',include_top=False,input_tensor = input_layer)
 global_avg = keras.layers.GlobalAveragePooling2D()(irv2.output)
 dense_1 = keras.layers.Dense(1,activation = 'sigmoid')(global_avg)
 model = keras.Model(inputs=irv2.inputs,outputs=dense_1)

 model.summary()

您遇到的错误可能是由于 tf 1.x 和 tf 2.x 之间的导入更改造成的

根据您的张量流版本尝试以下任何一种导入方法。它应该修复错误。

from tensorflow.keras.models import Model

from tensorflow.keras import Model

还要确保从 Tensorflow 或 keras 导入所有内容。在同一脚本中使用从任一库导入的函数都会导致不兼容错误。


0
投票
  • -1
    将为您提供最后一个密集层,但您真正的是什么是
    -2
  • 之上的一层
  • 输入应该是inception模型输入层
import tensorflow as tf
from tensorflow.keras.layers import Dense
from keras.models import Model

irv2 = tf.keras.applications.inception_resnet_v2.InceptionResNetV2()
predictions = Dense(2, activation='softmax')(irv2.layers[-2].output)
model = Model(inputs=irv2.input, outputs=predictions)

model.summary()

0
投票

如果使用最新版本的tensorflow,那么尝试 -

从张量流导入keras

来自 keras。api.layers 导入 Dense

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.