python-3.x - tensorflow.keras:图形在“time_distributed_1”层断开
问题描述
我正在尝试将几个完全连接的层附加到分层注意网络 (HAN) 的末尾,以对文本执行二进制分类任务。我的修改产生了一个多输入模型,它应该接受一些文本输入(通过 HAN)以及一些我需要通过密集网络的附加值(浮点数)。但我遇到以下错误:
ValueError: Graph disconnected: 无法在“time_distributed_1”层获得张量 Tensor("word_input:0", shape=(None, 100, 7), dtype=float32) 的值。访问以下先前层没有问题:[]
我在没有修改的情况下运行了 HAN 网络,并且能够成功地将其训练为我的数据(文本上的二进制分类问题)。
这是模型的代码:
embedding_layer = Embedding(len(char_index) + 1,
EMBEDDING_DIM,
input_length=MAX_WORD_LENGTH,
trainable=True)
char_input = Input(shape=(MAX_WORD_LENGTH,), dtype='float32', name = 'char_input')
char_sequences = embedding_layer(char_input)
char_lstm = Bidirectional(LSTM(100, return_sequences=True))(char_sequences)
char_dense = TimeDistributed(Dense(200))(char_lstm)
char_att = AttentionWithContext()(char_dense)
charEncoder = Model(char_input, char_att)
words_input = Input(shape=(MAX_WORDS, MAX_WORD_LENGTH), dtype='float32', name = 'word_input')
words_encoder = TimeDistributed(charEncoder)(words_input)
words_lstm = Bidirectional(LSTM(100, return_sequences=True))(words_encoder)
words_dense = TimeDistributed(Dense(200))(words_lstm)
words_att = AttentionWithContext()(words_dense)
preds = Dense(1, activation='sigmoid')(words_att)
# model = Model(words_input, preds)
sentEncoder = Model(words_input, preds)
stats_input = Input(shape = (8,), name = 'stat_input')
stats_x = Dense(4, activation = 'relu')(stats_input)
stats_x_2 = Dense(2, activation = 'relu')(stats_x)
stats_x_3 = Dense(1, activation = 'sigmoid')(stats_x_2)
final_layer = Add()([preds, stats_x_3])
out = Dense(1, activation = 'sigmoid')(final_layer)
merged_output_model = Model(stats_input, out)
model = Model(inputs = [char_input, stats_input], outputs = out)
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['acc'])
# plot_model(model, to_file='model.png', show_shapes = True)
model.summary()
earlyCallback = EarlyStopping(patience = 5, verbose = 1)
model.fit(
{"char_input": x_train, "stat_input": stats_train},
y_train,
validation_data = ({"char_input": x_val, "stat_input": stats_val}, y_val),
epochs = 600,
callbacks = [earlyCallback]
)
这是我使用 HAN 模型的 kaggle 链接: https ://www.kaggle.com/sermakarevich/hierarchical-attention-network
我的整个代码: https ://gist.github.com/sonaalPradeep/6848be0faf5cfa389466fa83d6025c83
追溯 :
Traceback (most recent call last):
File "han_w_stats.py", line 219, in <module>
merged_output_model = Model(stats_input, out)
File "/home/lenovo/venvs/keras-tf/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py", line 242, in __new__
return functional.Functional(*args, **kwargs)
File "/home/lenovo/venvs/keras-tf/lib/python3.8/site-packages/tensorflow/python/training/tracking/base.py", line 457, in _method_wrapper
result = method(self, *args, **kwargs)
File "/home/lenovo/venvs/keras-tf/lib/python3.8/site-packages/tensorflow/python/keras/engine/functional.py", line 115, in __init__
self._init_graph_network(inputs, outputs)
File "/home/lenovo/venvs/keras-tf/lib/python3.8/site-packages/tensorflow/python/training/tracking/base.py", line 457, in _method_wrapper
result = method(self, *args, **kwargs)
File "/home/lenovo/venvs/keras-tf/lib/python3.8/site-packages/tensorflow/python/keras/engine/functional.py", line 190, in _init_graph_network
nodes, nodes_by_depth, layers, _ = _map_graph_network(
File "/home/lenovo/venvs/keras-tf/lib/python3.8/site-packages/tensorflow/python/keras/engine/functional.py", line 926, in _map_graph_network
raise ValueError('Graph disconnected: '
ValueError: Graph disconnected: cannot obtain value for tensor Tensor("word_input:0", shape=(None, 100, 7), dtype=float32) at layer "time_distributed_1". The following previous layers were accessed without issue: []
解决方案
推荐阅读
- swift - 替换 Swift String 中的字符?
- javascript - 使用 SVG 弧线绘制部分圆
- verilog - 从参数名称实例化 Verilog 模块
- react-native - ReactNative 0.57 构建 IOS 无法读取未定义的属性“文件名”(空))
- php - 为什么要在返回之前分配给 $var ?
- c++ - 为什么可以将整数分配给字符串变量?
- apache-spark - 如何在pyspark中将字符串转换为纳秒的时间戳
- python - 如何打印前/多行?
- php - 与我的数据库通信的最安全方式?
- powershell - 将字符串添加到 PowerShell 中的计算输出