未加载包含Keras和TensorFlow

未加载包含Keras和TensorFlow

本文介绍了未加载包含Keras和TensorFlow_addons层的TensorFlow模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经从TensorFlow_addons训练了一个带有Keras层和Weight_Normalization层的模型。这是我训练并保存为TensorFlow文件格式的模型:

import tensorflow as tf
import tensorflow.keras as tk
import tensorflow_addons as tfa

model = tf.keras.Sequential([
    tf.keras.layers.Input((X_train.shape[1]-1,)),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.2),
    tfa.layers.WeightNormalization(tf.keras.layers.Dense(2048, activation="relu")),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.5),
    tfa.layers.WeightNormalization(tf.keras.layers.Dense(1048, activation="relu")),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.5),
    tfa.layers.WeightNormalization(tf.keras.layers.Dense(206, activation="sigmoid")),
    ])

(并且它没有自定义指标)

from keras.callbacks import ModelCheckpoint, EarlyStopping

# autosave best Model
best_model = ModelCheckpoint("model", monitor='val_accuracy', mode='max',verbose=0, save_best_only=True)

earlystop = EarlyStopping(monitor = 'val_accuracy',
                          patience = 15,
                          mode = 'max',
                          verbose = 1,
                          restore_best_weights = True)

callbacks = [best_model, earlystop]

model.compile(loss= 'binary_crossentropy',optimizer= 'Adam',metrics= ['accuracy'])
history = model.fit(X_res, y_res, epochs=100, verbose= 2, validation_data=(X_val[X_val.columns[1:]],y_val[y_val.columns[1:]]), callbacks=callbacks)

但当我加载模型时,它返回错误:

model = tk.models.load_model("../input/model")

您能帮我正确加载模型吗?谢谢

推荐答案

我怀疑您的kerastensorflow都是分开安装的;我使用过tfa,从来没有遇到过这样的加载问题;

实际上,您可以通过tensorflow导入所有内容:

import tensorflow as tf
import tensorflow.keras as tk
import tensorflow_addons as tfa

但在这里您通过普通keras

加载回调
from keras.callbacks import ModelCheckpoint, EarlyStopping

为了首先确保您确实存在加载模型问题,请确保每个导入都是通过tensorflow.keras完成的(我希望在执行此操作后问题会完全消失)。

替换

from keras.callbacks import ModelCheckpoint, EarlyStopping

使用:

from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping

总而言之,使用新导入(全部来自tensorflow.keras)从头开始培训,然后检查问题是否重现。

这篇关于未加载包含Keras和TensorFlow_addons层的TensorFlow模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-27 20:19