Метаобучение для поиска оптимальной модели из предварительно обученных моделей в Tensorflow
У меня много предварительно обученных моделей с разным количеством слоев (Модели не являются последовательными). Данные обучения имели форму (1, 1, 103) для этих моделей, а выходные данные представляли собой метку класса от 0 до 9.
Я загрузил эти сохраненные модели, установил все слои как необучаемые. Я использовал эти модели в новой архитектуре следующим образом:
inp = keras.layers.Input(shape=(1,1,103), name = "new_input")
out_1 = model_1(inp) # model_1 is the name of variable where I loaded trained model
out_2 = model_2(inp)
out_3 = model_3(inp)
out_4 = model_4(inp)
x = keras.layers.concatenate([out_1, out_2, out_3, out_4])
out = keras.layers.dense(1)(x)
model = keras.models.Model(inputs=inp, outputs=out, name = "meta_model")
Когда я компилирую эту модель с
До этого момента я не получал никаких ошибок, но когда я запускаю
, я получаю эту ошибку TypeError: аргумент int() должен быть строкой, байтовым объектом или числом, а не «NoneType»
Я не уверен, где я ошибаюсь.
Предыдущие модели обучались с
Цель этой модели состояла в том, чтобы обучить эту модель с теми же данными и попытаться выяснить, какая модель среди ранее обученных моделей была оптимальной.
Любое другое решение/предложение по поиску оптимального количества слоев с использованием метаобучения также будет оценено. Я могу вручную найти оптимальное количество слоев методом проб и ошибок, но я хочу, чтобы метамодель нашла это на основе набора данных.
например: при обучении на наборе данных1 я обнаружил, что после 7 слоев не было значительного увеличения точности, тогда как для набора данных2 он достиг своего пика на 4 слоях, и добавление дополнительных слоев было бесполезным.
1 ответ
Для настройки гиперпараметров могу порекомендовать Ray Tune. Я использую его, и мне очень нравится этот фреймворк.
https://docs.ray.io/en/latest/tune/examples/tune_mnist_keras.html