我有许多预先训练过的模型有不同的层数(模型不是顺序的)。对于这些模型,训练数据有一个形状(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")当我用optimizer = "sgd"和loss = "mse"编译这个模型时。
直到现在我才得到任何错误,但是当我运行
model.fit()时,我得到了一个错误TypeError__:int()参数必须是一个字符串、一个类似字节的对象或一个数字,而不是'NoneType‘。
我不知道我哪里出了问题。
前面的模型使用"adam"优化器和"sparse_categorical_crossentropy"损失进行训练,数据集有10个类。
该模型的目的是用相同的数据对该模型进行训练,并试图找出在先前训练的模型中哪个模型是最优的。
任何其他的解决方案/建议,以找到一个最佳数量的层使用元学习,也将不胜感激。我可以通过尝试和错误手动找到最优的层数,但是我希望元模型能够找到基于数据集的最佳层数。
通过在dataset1上的训练,我发现在7层之后,精确度没有明显的提高,而对于dataset2来说,在4层达到峰值,增加更多的层是无用的。
发布于 2022-02-17 13:28:25
对于超参数调优,我可以推荐雷调。我使用它,我非常喜欢这个框架。
https://docs.ray.io/en/latest/tune/examples/tune_mnist_keras.html
https://stackoverflow.com/questions/71158680
复制相似问题