python - 无法理解:ValueError: Graph disconnected: cannot get value for tensor Tensor
问题描述
我写了一个类似于此代码的架构: https://keras.io/guides/functional_api/#manipulate-complex-graph-topologie:
visual_features_input = keras.Input(
shape=(1000,), name="Visual-Input-FM", dtype='float')
et_features_input = keras.Input(
shape=(12,), name="ET-input", dtype='float')
sentence_encoding_input = keras.Input(
shape=(784,), name="Sentence-Input-Encoding", dtype='float')
et_features = layers.Dense(units = 12, name = 'et_features')(et_features_input)
visual_features = layers.Dense(units = 100, name = 'visual_features')(visual_features_input)
sentence_features = layers.Dense(units = 60, name = 'sentence_features')(sentence_encoding_input)
x = layers.concatenate([sentence_features, visual_features, et_features], name = 'hybrid-concatenation')
score_pred = layers.Dense(units = 1, name = "score")(x)
group_pred = layers.Dense(units = 5, name="group")(x)
# Instantiate an end-to-end model predicting both score and group
hybrid_model = keras.Model(
inputs=[sentence_features, visual_features, et_features],
outputs=[group_pred]
# outputs=[group_pred, score_pred],
)
但我得到了错误:
ValueError: Graph disconnected: cannot obtain value for tensor Tensor("Sentence-Input-Encoding_2:0", shape=(None, 784), dtype=float32) at layer "sentence_features". The following previous layers were accessed without issue: []
知道为什么吗?
解决方案
在构建模型时注意正确定义输入层
他们是inputs=[sentence_encoding_input, visual_features_input, et_features_input]
和不是inputs=[sentence_features, visual_features, et_features]
这里是完整的模型
from tensorflow import keras
from tensorflow.keras import layers
visual_features_input = keras.Input(
shape=(1000,), name="Visual-Input-FM", dtype='float')
et_features_input = keras.Input(
shape=(12,), name="ET-input", dtype='float')
sentence_encoding_input = keras.Input(
shape=(784,), name="Sentence-Input-Encoding", dtype='float')
et_features = layers.Dense(units = 12, name = 'et_features')(et_features_input)
visual_features = layers.Dense(units = 100, name = 'visual_features')(visual_features_input)
sentence_features = layers.Dense(units = 60, name = 'sentence_features')(sentence_encoding_input)
x = layers.concatenate([sentence_features, visual_features, et_features], name = 'hybrid-concatenation')
score_pred = layers.Dense(units = 1, name = "score")(x)
group_pred = layers.Dense(units = 5, name="group")(x)
# Instantiate an end-to-end model predicting both score and group
hybrid_model = keras.Model(
inputs=[sentence_encoding_input, visual_features_input, et_features_input],
outputs=[group_pred]
# outputs=[group_pred, score_pred],
)
hybrid_model.summary()
推荐阅读
- android - 如何在 2 个不同的班级之间等待接收结果:
- spring - 替换 Spring Bean 的私有方法
- node.js - 连接到 SMTP 服务器
- php - 如何在 ubuntu 18.04 和 PHP 7.2 上将 Libzip 更新到 1.2
- javascript - 如何在Javascript中的多维数组中获取每个标题的最小数字
- javascript - 如何在带有条件标记渲染的传单地图中访问嵌套的 json 对象并显示标记
- android - 为什么小吃店会消失在屏幕上?
- javascript - 从 Firebase 存储和检索数据以不同的格式返回
- angular - 角度如何在组件的模板中呈现html标记
- mysql - 对于具有单词类型(名词,动词......)的语言词典,最好的方法是什么?