AttributeError:模块“keras.api._v2.keras.callbacks”没有属性“Tensorboard”

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

我编写此代码是为了在tensorflow hub上使用其他模型,如下所示。我有一个问题,它说

AttributeError: module 'keras.api._v2.keras.callbacks' has no attribute 'Tensorboard'

我用谷歌搜索但找不到任何东西。这是我的代码:

# %%
import zipfile

!wget https://storage.googleapis.com/ztm_tf_course/food_vision/10_food_classes_10_percent.zip

zip_ref = zipfile.ZipFile("10_food_classes_10_percent.zip")
zip_ref.extractall()
zip_ref.close()

# %%
import os

for dirpath, dirnames, filenames in os.walk("10_food_classes_10_percent"):
    print(f"there are {len(dirnames)} directories and {len(filenames)} images in {dirpath}")

# %%
from keras.preprocessing.image import ImageDataGenerator

IMAGE_SHAPE = (224, 224)
BATCH_SIZE = 32

train_dir = "10_food_classes_10_percent/train/"
test_dir = "10_food_classes_10_percent/test/"

train_datagen = ImageDataGenerator(rescale=1/255.0)
test_datagen = ImageDataGenerator(rescale=1/255.0)

print("training images: ")
train_data_10_percent = train_datagen.flow_from_directory(train_dir, 
                                                          target_size=IMAGE_SHAPE, 
                                                          batch_size=BATCH_SIZE, 
                                                          class_mode="categorical")
print("testing images: ")
test_data = train_datagen.flow_from_directory(test_dir, 
                                                target_size=IMAGE_SHAPE, 
                                                batch_size=BATCH_SIZE, 
                                                class_mode="categorical")


# %%
import keras
import sklearn
import numpy as np
import pandas as pd
import tensorflow as tf
import matplotlib.pyplot as plt

# %%
import datetime

def create_tensorboard_callback(dir_name, experimment_name):
    log_dir = dir_name + "/" + experimment_name + "/" + datetime.datetime.now().strftime("%m%d%Y-%H%M%S")
    tensorboard_callback = tf.keras.callbacks.Tensorboard(log_dir=log_dir)
    print(f"saving tensorboard log to {log_dir}")
    return tensorboard_callback
tf.keras.callbacks.TensorBoard

# %%
resnet_url = "https://tfhub.dev/google/imagenet/resnet_v2_50/feature_vector/4"

efficientnet_url = "https://tfhub.dev/tensorflow/efficientnet/b0/feature_vector/1"

# %%
import tensorflow_hub as hub

# %%
def create_model(model_url, num_classes=10):
    feature_extraction_layer = hub.KerasLayer(model_url,
                                             trainable=False,
                                             name="feature_extraction_layer",
                                             input_shape=IMAGE_SHAPE+(3,))
    
    model = tf.keras.Sequential([
        feature_extraction_layer,
        tf.keras.layers.Dense(num_classes, activation="softmax", name="output_layer")
    ])
    
    return model


# %%
resnet_model = create_model(resnet_url,
                            num_classes=train_data_10_percent.num_classes)

# %%
resnet_model.summary()

# %%
resnet_model.compile(loss="categorical_crossentropy",
                     optimizer=tf.keras.optimizers.Adam(),
                     metrics=["accuracy"])

# %%
resnet_history = resnet_model.fit(train_data_10_percent,
                                  epochs=5,
                                  steps_per_epoch=len(train_data_10_percent),
                                  validation_data=test_data,
                                  callbacks=[create_tensorboard_callback(dir_name="tensorflow_hub",
                                                                         experimment_name="resnet50v")])



如有任何帮助,我们将不胜感激

最初,我的代码有

keras.callbacks.Tensorboard
,然后我发现较新的张量流版本使用
tf.keras
,因此是
tf.keras.callbacks.Tensorboard
。没有解决,所以我在网上搜索并没有找到任何结果。我认为这可能是一个愚蠢的错误,并将其从
Tensorboard
更改为
tensorboard
,但结果相同。

python tensorflow machine-learning keras deep-learning
1个回答
0
投票

这可能是因为您在导入中将张量流与 keras 混合在一起。

© www.soinside.com 2019 - 2024. All rights reserved.