gpt4 book ai didi

python - Keras 向中间层提供输入并获得最终输出

转载 作者:太空狗 更新时间:2023-10-30 02:15:05 26 4
gpt4 key购买 nike

我的模型是一个简单的全连接网络,如下所示:

inp=Input(shape=(10,))
d=Dense(64, activation='relu')(inp)
d=Dense(128,activation='relu')(d)
d=Dense(256,activation='relu')(d) #want to give input here, layer3
d=Dense(512,activation='relu')(d)
d=Dense(1024,activation='relu')(d)
d=Dense(128,activation='linear')(d)

因此,在保存模型后,我想将输入提供给第 3 层。我现在正在做的是:

model=load_model('blah.h5')    #above described network
print(temp_input.shape) #(16,256), which is equal to what I want to give

index=3
intermediate_layer_model = Model(inputs=temp_input,
outputs=model.output)

End_output = intermediate_layer_model.predict(temp_input)

但它不起作用,即我收到诸如输入不兼容、输入应为元组等错误。错误消息是:

raise TypeError('`inputs` should be a list or tuple.') 
TypeError: `inputs` should be a list or tuple.

有什么方法可以在网络中间传递我自己的输入并获得输出,而不是在开始时提供输入并从末尾获得输出?任何帮助将不胜感激。

最佳答案

首先,您必须了解在 Keras 中,当您在输入上应用层时,a new node is created inside this layer它连接输入和输出张量。每层可能有多个节点将不同的输入张量连接到它们相应的输出张量。为了构建模型,遍历这些节点并创建模型的新图,其中包含从输入张量到达输出张量所需的所有节点(即您在创建模型时指定的节点:model = Model(inputs= [...],输出=[...])

现在您想要为模型的中间层提供数据并获取模型的输出。由于这是一个新的数据流路径,我们需要为与这个新计算图对应的每一层创建新节点。我们可以这样做:

idx = 3  # index of desired layer
input_shape = model.layers[idx].get_input_shape_at(0) # get the input shape of desired layer
layer_input = Input(shape=input_shape) # a new input tensor to be able to feed the desired layer

# create the new nodes for each layer in the path
x = layer_input
for layer in model.layers[idx:]:
x = layer(x)

# create the model
new_model = Model(layer_input, x)

幸运的是,您的模型由一个分支组成,我们可以简单地使用 for 循环来构建新模型。但是,对于更复杂的模型,这样做可能并不容易,您可能需要编写更多代码来构建新模型。

关于python - Keras 向中间层提供输入并获得最终输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52800025/

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