【问题标题】:keras.metrics has no attribute 'Metric'keras.metrics 没有属性“度量”
【发布时间】:2021-10-27 18:19:01
【问题描述】:

我尝试使用 Keras Tuner 进行超参数优化:

import keras
from kerastuner import HyperModel
from kerastuner.tuners import Hyperband

input_shape = (1, 28, 28)
num_classes = 10

# Define hypermodel class
class CNNHyperModel(HyperModel):
    def __init__(self, input_shape, num_classes):
        self.input_shape = input_shape
        self.num_classes = num_classes

    def build(self, hp):
        model = Sequential()
        model.add(Conv2D(32, kernel_size=(3, 3), activation="relu", input_shape=input_shape))
        model.add(Conv2D(64, (3, 3), activation="relu"))
        model.add(MaxPooling2D(pool_size=(2, 2)))
        model.add(Dropout(0.25))
        model.add(Flatten())
        model.add(Dense(128, activation="relu"))
        model.add(Dropout(0.5))
        model.add(Dense(num_classes, activation="softmax"))

        model.compile(
            loss=keras.losses.categorical_crossentropy,
            optimizer=keras.optimizers.Adadelta(),
            metrics=["accuracy"],
        )

        return model

# Instantiate
hypermodel = CNNHyperModel(input_shape=input_shape, num_classes=num_classes)

# Create tuner
HYPERBAND_MAX_EPOCHS = 40
MAX_TRIALS = 20
EXECUTION_PER_TRIAL = 2
SEED = 1

tuner = RandomSearch(
    hypermodel,
    max_epochs=HYPERBAND_MAX_EPOCHS,
    objective='val_accuracy',
    seed=SEED,
    max_trials=MAX_TRIALS,
    executions_per_trial=EXECUTION_PER_TRIAL,
    directory='hyperband',
    project_name='mnist'
)

我明白了

AttributeError: 模块 'tensorflow._api.v1.keras.metrics' 没有属性 'Metric'

使用 conda 安装了 Tensorflow 1.13 和 2.0。

按照this answer 中的建议包含from tensorflow.python.keras.metrics import Metric 不会改变任何内容。

【问题讨论】:

  • 这样做from tensorflow.keras.metrics import Metric
  • 不幸的是,这会产生ImportError: cannot import name 'Metric' from 'tensorflow.keras.metrics' (/opt/miniconda3/lib/python3.7/site-packages/tensorflow/_api/v1/keras/metrics/__init__.py)
  • 我想你使用的是 v1
  • 请您将 TF 更新到 1.15.2 并尝试。我在使用from tensorflow.python.keras.metrics import Metric 的 TF 1.15.2 和 TF 2.2.0-rc2 中没有遇到任何问题。
  • 我注意到我确实在使用 TF 1.13。尽管我在虚拟环境中安装了 TF 2.0,但当我打印 tf.__version__ 时,它显示的是 1.13。我在 vscode 中的 jupyter 中编码,找不到解决方案。

标签: python tensorflow keras


【解决方案1】:

Tensorflow 2.6.0 的最新版本具有tf.keras.metrics.Metric API。

你可以导入为

from tensorflow.keras.metrics import Metric

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 2019-03-19
    • 2019-08-11
    • 2019-03-08
    • 2019-07-03
    相关资源
    最近更新 更多