![](/img/trans.png)
[英]Keras Tuner - Model-building function did not return a valid Keras Model instance
[英]Keras Tuner - “Model-building function did not return a valid Keras Model instance”
我正在嘗試使用 Keras Tuner 獲取模型的超參數,但是當我執行代碼時,出現以下錯誤:“RuntimeError:模型構建函數沒有返回有效的 Keras 模型實例,找到 <keras.engine. 0x7fd5809d5a50處的sequential.Sequential對象>"
我已經在互聯網上搜索過,但是在遵循堆棧上的多個問題以及 Keras Tuner gitHub 頁面( https://github.com/keras-team/keras-tuner )中的教程之后,它們都沒有幫助。 問題似乎與導入有關,但我已將導入更改為建議的導入,但我仍然收到相同的錯誤消息
這是代碼
def build(hp):
activation = hp.Choice('activation',
[
'relu',
'tanh',
'linear',
'selu',
'elu'
])
recurrent_dropout = hp.Float(
'recurrent_dropout',
min_value=0.0,
max_value=0.99,
default=0.2)
num_units = hp.Int(
'num_units',
min_value=0,
max_value=64,
default=32)
model = Sequential()
model.add(LSTM(units=num_units, activation=activation, recurrent_dropout = recurrent_dropout,input_shape=(X_train.shape[1], 1)))
model.add(Dense(1))
model.compile(
optimizer=keras.optimizers.Adam(
hp.Float(
'learning_rate',
min_value=1e-10,
max_value=1e-2,
sampling='LOG',
default=1e-6
),
),
loss=tf.losses.MeanSquaredError(),
metrics=[tf.metrics.MeanAbsoluteError()]
)
return model
for company in companies:
scaler, X_train, y_train, X_val, y_val, X_test, y_test = lstm_preprocessing(company, start, end)
bayesian_opt_tuner = BayesianOptimization(
build,
objective="val_loss",
max_trials=3,
executions_per_trial=1,
directory=os.path.normpath('C:/keras_tuning'),
project_name='kerastuner_bayesian_poc',
overwrite=True)
n_epochs=100
stop_early = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=5)
bayesian_opt_tuner.search(X_train, y_train, epochs=n_epochs,
validation_data=(X_val, y_val),
validation_split=0.2, verbose=1,
callbacks=[stop_early])
bayes_opt_model_best_model = bayesian_opt_tuner.get_best_models(
num_models=1)
model = bayes_opt_model_best_model[0]
train_predict, val_predict, test_predict, test_y = evaluate_model(model, scaler, X_train,y_train,X_val,y_val,X_test,y_test)
mse=mean_squared_error(test_y[0], test_predict[:, 0])
mae=mean_absolute_error(test_y[0], test_predict[:, 0])
mape=mean_absolute_percentage_error(test_y[0], test_predict[:, 0])
plt.figure(figsize=(15, 5))
plt.plot(test_predict[:, 0], label='Predict stock price')
plt.plot(test_y[0], label='Real stock price')
plt.title(company+ ' stock price')
plt.xlabel('Time in days from 2020-01-01 to 2020-12-30')
plt.ylabel('Price per share(USD)')
plt.legend()
plt.show()
print('MAE: {} and MSE: {} and MAPE: {}' .format(mae,mse,mape))
這是完整的錯誤消息:
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-29-de95b1bdc07c> in <module>()
14 directory=os.path.normpath('C:/keras_tuning'),
15 project_name='kerastuner_bayesian_poc',
---> 16 overwrite=True)
17 n_epochs=100
18 stop_early = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=5)
6 frames
/usr/local/lib/python3.7/dist-packages/keras_tuner/engine/hypermodel.py in build(self, hp)
140 raise RuntimeError(
141 "Model-building function did not return "
--> 142 "a valid Keras Model instance, found {}".format(model)
143 )
144
RuntimeError: Model-building function did not return a valid Keras Model instance, found <keras.engine.sequential.Sequential object at 0x7fd5809d5a50>
這是我的進口:
!pip install keras-models
!pip install tensorflow
!pip install git+https://github.com/keras-team/keras-tuner.git@1.0.2rc0egg=keras-tuner-1.0.2rc0
!pip install pydot
!pip install pydotplus
!pip install graphviz
!pip install keras-tuner --upgrade
import tensorflow as tf
from tensorflow import keras
from statsmodels.stats.stattools import durbin_watson
from scipy.stats.stats import pearsonr
# Metrics
from keras import metrics
# Models
from tensorflow.keras.models import Sequential, Model, load_model
from tensorflow.keras import layers
from keras_tuner.tuners import RandomSearch
from tensorflow.keras.layers import Conv2D,Flatten,Dropout,Dense
from tensorflow.keras.optimizers import Adam
# LSTM Layers
from tensorflow.keras.layers import Dense, LSTM, Dropout, RepeatVector, Flatten
from tensorflow.keras.layers import TimeDistributed, Input, BatchNormalization, Activation
from tensorflow.keras.layers import multiply, concatenate, dot
# Optimisation and Utils
from tensorflow.keras.utils import plot_model
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.callbacks import EarlyStopping
from keras_tuner.tuners import BayesianOptimization
我已經在 Mnist 數據集上測試了您的代碼,n_epochs=2。 它工作正常。 要做的是
我得到的輸出:
bayesian_opt_tuner.search_space_summary()
Search space summary
Default search space size: 4
activation (Choice)
{'default': 'relu', 'conditions': [], 'values': ['relu', 'tanh', 'linear', 'selu', 'elu'], 'ordered': False}
recurrent_dropout (Float)
{'default': 0.2, 'conditions': [], 'min_value': 0.0, 'max_value': 0.99, 'step': None, 'sampling': None}
num_units (Int)
{'default': 32, 'conditions': [], 'min_value': 0, 'max_value': 64, 'step': 1, 'sampling': None}
learning_rate (Float)
{'default': 1e-06, 'conditions': [], 'min_value': 1e-10, 'max_value': 0.01, 'step': None, 'sampling': 'log'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.