gpt4 book ai didi

keras - 如何将一个模型拆分成两个独立的模型?

转载 作者:行者123 更新时间:2023-12-01 12:22:07 26 4
gpt4 key购买 nike

例如我有一个包含 3 个中间层的模型:

模型 1:输入 1 --> L1 --> L2 --> L3,

并想把它分成

模型 2:输入 2 --> L1 --> L2

模型3:输入3 --> L3

使用函数式 API 很容易将这两个叠加起来得到第一个。但我不确定如何做相反的事情。

第一个拆分模型可以通过:Model(Input1, L2.output)获得,但是第二个就没那么容易了。最简单的方法是什么?

示例代码:

# the first model
input1 = Input(shape=(784,))
l1 = Dense(64, activation='relu')(inputs)
l2 = Dense(64, activation='relu')(l1)
l3 = Dense(10, activation='softmax')(l2)
model1 = Model(inputs, l3)

我想构建上面描述的 model2model3model1 共享权重,而 model1 已经存在(可能从磁盘加载)。

谢谢!

最佳答案

简而言之,需要额外的Input。因为输入张量不同于中间张量

首先定义共享层:
l1 = Dense(64, activation='relu')
l2 = Dense(64, activation='relu')
l3 = Dense(10, activation='softmax')

记住
input1 = Input(shape=(784,)) # input1是一个输入张量
o1 = l1(input1) # o1是一个中间张量

Model1 可以定义为 model1 = Model(input1, l3(l2(l1(input1))) )

要定义 model2,您必须首先定义一个新的输入张量 input2=Input(shape=(64,))。然后 model2 = Model(input2, l3(l2(input2))

关于keras - 如何将一个模型拆分成两个独立的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43349489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com