Python 为什么我会得到';连接到源节点的无效输出';Tensorflow轮毂KerasLayer出错?
Edit:我尝试打开“急切执行”以查看是否能够准确识别问题发生的位置,并且“急切执行”停止了错误并使其成功运行。不知道为什么会这样,不幸的是,这对我真的没有帮助 原始帖子:我对Tensorflow非常陌生,我正在尝试了解如何在tf.keras模型中使用Tensorflow Hub模块。我的目标是创建一个电子邮件分类系统,以便在我的组织中发送电子邮件 我已经使用通用句子编码模块预处理的数据构建了一个模型。这是一个RNN,工作非常有效,但我感兴趣的是是否可以提高我的准确性 现在我想把这个模块直接合并到我的神经网络中,这样我就可以训练它了 我在Jupyter笔记本上运行这个 我建立了一个简单的非RNN模型,尝试获得Tensorflow Hub模块培训Python 为什么我会得到';连接到源节点的无效输出';Tensorflow轮毂KerasLayer出错?,python,tensorflow,keras,tensorflow-hub,Python,Tensorflow,Keras,Tensorflow Hub,Edit:我尝试打开“急切执行”以查看是否能够准确识别问题发生的位置,并且“急切执行”停止了错误并使其成功运行。不知道为什么会这样,不幸的是,这对我真的没有帮助 原始帖子:我对Tensorflow非常陌生,我正在尝试了解如何在tf.keras模型中使用Tensorflow Hub模块。我的目标是创建一个电子邮件分类系统,以便在我的组织中发送电子邮件 我已经使用通用句子编码模块预处理的数据构建了一个模型。这是一个RNN,工作非常有效,但我感兴趣的是是否可以提高我的准确性 现在我想把这个模块直接合并
打印(“版本:,tf.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
打印(“急切模式:”,tf.executing_急切地()
打印(“中心版本:”,中心版本)
打印(“如果tf.test.is\GPU\u available()则GPU为”,“可用”)否则“不可用”)
集线器模块=”https://tfhub.dev/google/tf2-preview/nnlm-en-dim128/1"
model=models.Sequential()
model.add(hub.KerasLayer(hub_模块,input_shape=[],dtype=tf.string,trainable=True))
model.add(layers.Dense(128,activation='relu'))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(3,activation='softmax'))
model.build()
model.summary()
compile(优化器='adam',loss='classifical_crossentropy',metrics=['accurity','mae'])
#假数据
train_data=[[“你好”],[“再见,我的朋友”],[“幸福是一片温暖的吐司”]]
列车标签=[[1,0,0],[0,1,0],[0,0,1]]
train_dataset=tf.data.dataset.from_tensor_切片((train_数据,train_标签))
model.fit(train_数据集,epochs=1,verbose=2)
以下是我的完整控制台输出:
Version: 1.14.0
Eager mode: False
Hub version: 0.6.0
GPU is available
Model: "sequential_5"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
keras_layer_5 (KerasLayer) (None, 128) 124642688
_________________________________________________________________
dense_15 (Dense) (None, 128) 16512
_________________________________________________________________
dense_16 (Dense) (None, 64) 8256
_________________________________________________________________
dense_17 (Dense) (None, 3) 195
=================================================================
Total params: 124,667,651
Trainable params: 124,667,651
Non-trainable params: 0
_________________________________________________________________
WARNING:tensorflow:Expected a shuffled dataset but input dataset `x` is not shuffled. Please invoke `shuffle()` on input dataset.
WARNING:tensorflow:Expected a shuffled dataset but input dataset `x` is not shuffled. Please invoke `shuffle()` on input dataset.
---------------------------------------------------------------------------
InvalidArgumentError Traceback (most recent call last)
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in _do_call(self, fn, *args)
1355 try:
-> 1356 return fn(*args)
1357 except errors.OpError as e:
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in _run_fn(feed_dict, fetch_list, target_list, options, run_metadata)
1338 # Ensure any changes to the graph are reflected in the runtime.
-> 1339 self._extend_graph()
1340 return self._call_tf_sessionrun(
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in _extend_graph(self)
1373 with self._graph._session_run_lock(): # pylint: disable=protected-access
-> 1374 tf_session.ExtendSession(self._session)
1375
InvalidArgumentError: Node 'Adam/gradients/keras_layer_1/StatefulPartitionedCall_grad/StatefulPartitionedCall': Connecting to invalid output 1 of source node keras_layer_1/StatefulPartitionedCall which has 1 outputs
During handling of the above exception, another exception occurred:
InvalidArgumentError Traceback (most recent call last)
<ipython-input-11-492e87ad5d5d> in <module>
28 train_dataset = tf.data.Dataset.from_tensor_slices((train_data, train_labels))
29
---> 30 model.fit(train_dataset, epochs=1, verbose=2)
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
778 validation_steps=validation_steps,
779 validation_freq=validation_freq,
--> 780 steps_name='steps_per_epoch')
781
782 def evaluate(self,
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\engine\training_arrays.py in model_iteration(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, initial_epoch, steps_per_epoch, validation_steps, validation_freq, mode, validation_in_fit, prepared_feed_values_from_dataset, steps_name, **kwargs)
139 reset_dataset_after_each_epoch = True
140 steps_per_epoch = training_utils.infer_steps_for_dataset(
--> 141 inputs, steps_per_epoch, epochs=epochs, steps_name=steps_name)
142 input_iterator = _get_iterator(inputs, model._distribution_strategy)
143
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\engine\training_utils.py in infer_steps_for_dataset(dataset, steps, epochs, steps_name)
1391 """
1392 assert isinstance(dataset, dataset_ops.DatasetV2)
-> 1393 size = K.get_value(cardinality.cardinality(dataset))
1394 if size == cardinality.INFINITE and steps is None:
1395 raise ValueError('When passing an infinitely repeating dataset, you '
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\backend.py in get_value(x)
2987 return function([], x)(x)
2988
-> 2989 return x.eval(session=get_session((x,)))
2990
2991
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\backend.py in get_session(op_input_list)
460 if not _MANUAL_VAR_INIT:
461 with session.graph.as_default():
--> 462 _initialize_variables(session)
463 return session
464
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\backend.py in _initialize_variables(session)
877 # marked as initialized.
878 is_initialized = session.run(
--> 879 [variables_module.is_variable_initialized(v) for v in candidate_vars])
880 uninitialized_vars = []
881 for flag, v in zip(is_initialized, candidate_vars):
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in run(self, fetches, feed_dict, options, run_metadata)
948 try:
949 result = self._run(None, fetches, feed_dict, options_ptr,
--> 950 run_metadata_ptr)
951 if run_metadata:
952 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
1171 if final_fetches or final_targets or (handle and feed_dict_tensor):
1172 results = self._do_run(handle, final_targets, final_fetches,
-> 1173 feed_dict_tensor, options, run_metadata)
1174 else:
1175 results = []
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
1348 if handle is None:
1349 return self._do_call(_run_fn, feeds, fetches, targets, options,
-> 1350 run_metadata)
1351 else:
1352 return self._do_call(_prun_fn, handle, feeds, fetches)
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in _do_call(self, fn, *args)
1368 pass
1369 message = error_interpolation.interpolate(message, self._graph)
-> 1370 raise type(e)(node_def, op, message)
1371
1372 def _extend_graph(self):
InvalidArgumentError: Node 'Adam/gradients/keras_layer_1/StatefulPartitionedCall_grad/StatefulPartitionedCall': Connecting to invalid output 1 of source node keras_layer_1/StatefulPartitionedCall which has 1 outputs
版本:1.14.0
渴望模式:False
集线器版本:0.6.0
GPU可用
型号:“顺序_5”
_________________________________________________________________
层(类型)输出形状参数
=================================================================
keras_第五层(KerasLayer)(无,128)124642688
_________________________________________________________________
密集型_15(密集型)(无,128)16512
_________________________________________________________________
密集型——16(密集型)(无,64)8256
_________________________________________________________________
密集型_17(密集型)(无,3)195
=================================================================
总参数:124667651
可培训参数:124667651
不可训练参数:0
_________________________________________________________________
警告:tensorflow:应为无序数据集,但输入数据集'x'未无序。请在输入数据集上调用'shuffle()'。
警告:tensorflow:应为无序数据集,但输入数据集'x'未无序。请在输入数据集上调用'shuffle()'。
---------------------------------------------------------------------------
InvalidArgumentError回溯(最后一次最近调用)
调用中的~\Anaconda3\envs\tensorflow\lib\site packages\tensorflow\python\client\session.py(self,fn,*args)
1355尝试:
->1356返回fn(*args)
1357除错误外。操作错误为e:
运行fn中的~\Anaconda3\envs\tensorflow\lib\site packages\tensorflow\python\client\session.py(源目录、获取列表、目标列表、选项、运行元数据)
1338#确保图形的任何更改都反映在运行时中。
->1339自扩展图()
1340返回self.\u调用\u tf\u sessionrun(
图中的~\Anaconda3\envs\tensorflow\lib\site packages\tensorflow\python\client\session.py(self)
1373与self._graph._session_run_lock():#pylint:disable=受保护的访问
->1374 TFU会话。扩展会话(自会话)
1375
InvalidArgumentInterfer:节点“Adam/gradients/keras\u layer\u 1/StatefulPartitionedCall\u grad/StatefulPartitionedCall”:连接到具有1个输出的源节点keras\u layer\u 1/StatefulPartitionedCall的无效输出1
在处理上述异常期间,发生了另一个异常:
InvalidArgumentError回溯(最后一次最近调用)
在里面
28 train_dataset=tf.data.dataset.from_tensor_切片((train_数据,train_标签))
29
--->30模型拟合(训练数据集,历元=1,详细=2)
~\Anaconda3\envs\tensorflow\lib\site packages\tensorflow\python\keras\engine\training.py in fit(self、x、y、批大小、历元、冗余、回调、验证拆分、验证数据、洗牌、类权重、样本权重、初始历元、每个历元的步数、验证步骤、验证频率、最大队列大小、工作者、使用多处理、**kwargs)
778验证步骤=验证步骤,
779验证频率=验证频率,
-->780步(每个历元的步数)
781
782 def评估(自我,
模型迭代中的~\Anaconda3\envs\tensorflow\lib\site packages\tensorflow\python\keras\engine\training\u arrays.py(模型、输入、目标、样本权重、批量大小、年代、详细程度、回调、val_输入、val_目标、val_样本权重、无序、初始历元、每历元步长、验证步骤、验证频率、模式、验证拟合、从数据集准备的反馈值、步骤名称、**kwargs)
139每个\u历元后重置\u数据集\u=真
每个历元140步=训练步数。推断数据集的步数(
-->141个输入,每个历元的步骤,历元=历元,步骤名称=步骤名称)
142输入迭代器=\u获取迭代器(输入、模型、分布策略)
143
~\Anaconda3\envs\tensorflow\lib\site pa