python - 使用 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)
解决方案
我可以在您的代码中发现两个错误:
在你之前
d2
忘记的编码器中name=
'encoder_output'
您忘记了行中的“s”
# model
model = Model(input=input, output=output)
它应该是:
model = Model(inputs=input, outputs=output)
否则它对我有用。希望它有所帮助!
推荐阅读
- python - 如何创建堆积条形图?
- python - 将自定义函数应用于数据框列
- javascript - 如何在javascript中将对象值数组与对象键进行比较和更改
- firebase - Firebase 在函数执行中的极端延迟
- r - 如果满足条件,则更改数据框的值,否则保持不变
- laravel - 在 laravel 中查找具有 JWT 令牌的用户 id
- java - Java 对原始数据进行膨胀异常
- groovy - Sleep() 方法和操作系统 - 调度程序 (Camunda/Groovy)
- json - 如何在 SwiftUI 中使用来自用户的输入更改 url 字符串
- python - 'pygame.Surface' 对象没有属性 'rect'