首页 > 解决方案 > 使用 keras 将新输入输入到中间层时出现错误

问题描述

我想知道当新的输入是从已经学习的模型的中间层输入时如何获得输出。

def encoder(input_):
    d1 = Dense(3, activation='relu', name='encoder_input')(input_)
    d2 = Dense(2, name='encoder_output')(d1)
    return d2

def decoder(input_):
    d1 = Dense(3, activation='relu', name='decoder_input')(input_)
    d2 = Dense(2, name='decoder_output')(d1)
    return d2

# input
input = Input(shape=(2,))

# output
output = decoder(encoder(input))

# model
model = Model(inputs=input, outputs=output)

model.compile(optimizer='adam', loss='mean_squared_error')
model_hist = model.fit(x_train, x_test,
                        epochs=n_epoch,
                        batch_size=batch_size,
                        verbose=verbose,
                        shuffle=True)

#error:Graph disconnected: cannot obtain value for tensor 
tmp_model = Model(input=model.get_layer('decoder_input').input, output=model.get_layer('decoder_output').output)
output = tmp_model.predict(data)

标签: pythonpython-3.xtensorflowmachine-learningkeras

解决方案


我可以在您的代码中发现两个错误:

  1. 在你之前d2忘记的编码器中name='encoder_output'

  2. 您忘记了行中的“s”

# model
model = Model(input=input, output=output)

它应该是:

model = Model(inputs=input, outputs=output)

否则它对我有用。希望它有所帮助!


推荐阅读