#keras
Вопрос:
Построение модели для RandomizedSearchCV
import tensorflow as tf from tensorflow import keras defs build_iris(n_hidden=1, learning_rate=3e-3, input_shape=[4], output=3): model = keras.models.Sequential() model.add(keras.layers.InputLayer(input_shape=input_shape)) k = [[200,100],[80.50],[50,10]] for layer in range(n_hidden): r = k[layer] idx = np.random.randint(0,len(r)) model.add(keras.layers.Dense(k[layer][idx], activation="relu")) #try change activiation and optimizer model.add(keras.layers.Dense(output, activation ="sigmoid")) model.compile(loss = "sparse_categorical_crossentropy", optimizer = keras.optimizers.SGD(learning_rate = learning_rate), metrics = ["accuracy"]) return model keras_cls = keras.wrappers.scikit_learn.KerasClassifier(build_iris)
Выполните случайный поиск
from sklearn.model_selection import RandomizedSearchCV import numpy as np lr_list_np = np.linspace(0.01, 0.1, num=1000).tolist() np.random.shuffle(lr_list_np) param_distribs = { "n_hidden": [0, 1, 2, 3], "learning_rate": lr_list_np } rnd_search_cv = RandomizedSearchCV(keras_cls, param_distribs, n_iter=10, cv=3, verbose=2) rnd_search_cv.fit(X_train, y_train, epochs = 100, validation_data = (X_valid, y_valid), callbacks = [keras.callbacks.EarlyStopping(patience=10)], verbose = 0 ) model = rnd_search_cv.best_estimator_.model model.summary()
Я получил следующее:
Model: "sequential_30" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= dense_66 (Dense) (None, 100) 500 _________________________________________________________________ dense_67 (Dense) (None, 80) 8080 _________________________________________________________________ dense_68 (Dense) (None, 3) 243 ================================================================= Total params: 8,823 Trainable params: 8,823 Non-trainable params: 0 _________________________________________________________________
Проблема 1. Очевидно, что входной слой не отображается в сводке, но я могу выполнить оценку и прогнозирование в обычном режиме
Как я могу это исправить
Проблема 2. даже я сохраняю его с помощью
model.save("modelIris_tuning_example.h5")
Входной слой все еще не выходит
Проблема 3. Как получить скорость обучения по модели экономии?