问题标签 [tensorflow2.x]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tensorflow - 我应该将@tf.function 用于所有功能吗?
官方@tf.function
教程说:
要获得最佳性能并使您的模型可在任何地方部署,请使用 tf.function 从您的程序中制作图表。多亏了 AutoGraph,大量的 Python 代码只适用于 tf.function,但仍有一些陷阱需要提防。
主要内容和建议如下:
- 不要依赖 Python 的副作用,如对象突变或列表追加。
- tf.function 最适用于 TensorFlow 操作,而不是 NumPy 操作或 Python 原语。
- 如有疑问,请使用 for x in y 成语。
它只提到了如何实现带@tf.function
注释的函数,但没有提到何时使用它。
是否有关于如何决定我是否应该至少尝试用 注释函数的启发式方法tf.function
?似乎没有理由不这样做,除非我懒得消除副作用或改变一些东西,比如range()
-> tf.range()
。但如果我愿意这样做...
有什么理由不使用@tf.function
所有功能吗?
tensorflow - 自定义 TF2 模型保存
我用 TF2 编写自定义模型
它充满了不可训练的随机参数!所以我需要完全保存模型,我不能使用 save_weights 因为每个模型的训练取决于它的自随机参数......
培训师的文件是这样的:
经过非常训练后,我尝试保存模型,但是当我调用 TF2 .save 时:
我有一个错误:
我将其更改为 .tf 格式,但又一次:
但它已经受过训练,如果我 _set_inputs
我不知道我该怎么办?我是 TF2 的科学和业余爱好者 帮助我,这对我的项目很重要......
encoding - 运行 Tensorflow2 升级脚本会触发编码错误
我目前正在尝试使用https://www.tensorflow.org/guide/upgrade中提供的 jupyter notebook升级脚本以与tensorflow2兼容,以便我可以在 google colab 中运行它,但是当我运行时此单元格(来自 Windows 中的 Anaconda 环境):
我收到一个编码错误:
我通常会utf-8
通过这样做将编码更改为: open(path, mode, encoding='UTF8')
,但在这种情况下我一无所知。我不是程序员,所以我的能力非常有限。请帮助我理解这个错误。
python-3.x - TensorFlow 2.0 - 模型子类化:无输入维度
我正在阅读TensorFlow 2.0 教程,并且遇到了模型子类化来创建 TensorFlow 2.0 模型。
我找到的代码是:
现在,在这段代码中,我的困惑是,代码的作者没有定义输入?
没有——
然后,定义的模型如何知道从训练数据中期望有多少属性/特征?
谢谢
python - Tensorflow 2:从集线器(resnet)修改模型
如何修改从集线器恢复的 Tensorflow 2 模型的模型图和函数(不仅仅是变量值)?
(这似乎与修改恢复的 TensorFlow 模型的动机相同,但适用于 Tensorflow 2。)
特别是对于resnet_v1_101(撰写本文时的版本 4),我尝试过tensorflow_hub.KerasLayer
、tensorflow.keras.models.load_model
、tensorflow.saved_model.load
和tensorflow_hub.load
. 这些都没有导致对象具有任何功能或属性来查看流程图(更不用说修改它了)。我认为这是因为模型是从早期的 Tensorflow 移植的,或者在保存时未修饰,但是流图和函数肯定必须可用于其自己的内部计算吗?
直接与 .pb 二进制文件混在一起会让人流血。
更新:我找到了一种适合我的情况的替代方法:完全避免使用集线器并改用 tensorflow.keras.applications.ResNet101。对于未在 keras 应用程序中实现的模型,对原始问题有一个答案仍然会很好。
python - 使用 Tensorflow_hub 和 Universal-sentence-encoder 时的困难
运行以下代码时,出现错误。有谁能帮助我吗?我正在使用 TensorFlow 2.1.0
我收到以下错误:
_override_gradient_function 中的文件“/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py”,第 4727 行,断言不是 self._gradient_function_map
断言错误
python - 监督数据集上的 TF2 padded_batch
问题设置
我正在关注本教程。本教程首先加载一个监督数据集(使用tfds.load
with as_supervised=True
):
然后本教程建议像这样洗牌和填充数据集:
电影评论可以有不同的长度。我们将使用该
padded_batch
方法来标准化评论的长度。
...但不幸的是,该padded_batch
方法需要一个额外的参数,该教程似乎已经忘记了:
重要假设
尽管错误堆栈说这padded_shapes
是缺少的参数,但从教程中我认为推断缺少的参数实际上是公平的batch_size
(应该先于padded_shapes
)。
我试过的
我认为这可能很容易解决,如下所示:
...但我的解决方案显然是错误的:
替换None
给()
我ValueError: Padded shape [()] must be a 1-D tensor of tf.int64 values, but its shape was (1, 0).
替换None
给1
我ValueError: The padded shape (1,) is not compatible with the corresponding input component shape ().
问题
我应该赋予这个padded_shapes
论点什么价值?或者,更一般地说,我在这里做错了什么?
非常感谢您的帮助。
python-3.x - Tensorflow.keras:AlreadyExistsError
我正在使用 tensorflow 构建模型。我训练了我的模型,它工作正常。然后,我修改了我的代码,当我尝试训练我的模型时,我得到了一个 AlreadyExistError。我重新启动了 Jupyter Notebook,但仍然遇到同样的错误。我需要一些帮助。这是我构建网络并训练它的一段代码。问题出现在最后一行。
训练 90000 个样本,验证 10000 个样本 Epoch 1/10
500/90000 [........] - ETA :2:00:49 /anaconda3/lib/python3.7/site-packages/keras/callbacks/callbacks.py:846:RuntimeWarning:提前停止取决于val_loss
不可用的指标。可用的指标是:(self.monitor, ','.join(list(logs.keys()))), RuntimeWarning ------------------------ -------------------------------------------------- -- 1 model.fit(np.array(x_train), np.array(y_train), batch_size=batch_size, epochs=no_epochs, ----> 2 validation_data=(np.array (x_test), np.array(y_test)), callbacks=[tensorboard, EarlyStopping(min_delta=0.0001, Patient=3)]) 3 print('你可以继续')/anaconda3/lib/python3.7/site-packages/tensorflow_core/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) 817 max_queue_size=max_queue_size, 818 workers=workers, --> 819 use_multiprocessing=use_multiprocessing) 820 821 def evaluate(self,
/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_v2.py in fit(self, model, 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) 340 mode=ModeKeys.TRAIN, 341 training_context=training_context, --> 342 total_epochs=epochs) 343 cbks.make_logs(model, epoch_logs,训练结果,模式键。训练)344
/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_v2.py in run_one_epoch(模型,迭代器,execution_function,dataset_size,batch_size,strategy,steps_per_epoch,num_samples,mode,training_context,total_epochs)126 step=step, mode=mode, size=current_batch_size) as batch_logs: 127 try: --> 128 batch_outs = execution_function(iterator) 129 except (StopIteration, errors.OutOfRangeError): 130 # TODO(kaftan): File bug about tf function和errors.OutOfRangeError?
/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_v2_utils.py in execution_function(input_fn) 96 #
numpy
在 Eager 模式下将张量转换为值。97 返回 nest.map_structure(_non_none_constant_value, ---> 98 分布式函数(input_fn)) 99 100 返回执行函数/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/def_function.py in call (self, *args, **kwds) 566 xla_context.Exit() 567 else: --> 568 result = self ._call(*args, **kwds) 569 570 如果tracing_count == self._get_tracing_count():
/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/def_function.py in _call(self, *args, **kwds) 630 # 提升成功,所以变量被初始化,我们可以运行 631 #无状态函数。--> 632 return self._stateless_fn(*args, **kwds) 633 else: 634 canon_args, canon_kwds = \
/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py in call (self, *args, **kwargs) 2361 with self._lock:
2362 graph_function, args, kwargs = self._maybe_define_function (args, kwargs) -> 2363 return graph_function._filtered_call(args, kwargs) # pylint: disable=protected-access 2364 2365 @property/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py in _filtered_call(self, args, kwargs) 1609 if isinstance(t, (ops.Tensor, 1610
resource_variable_ops.BaseResourceVariable))), -> 1611 self.captured_inputs)1612 1613 def _call_flat(self,args,captured_inputs,cancellation_manager=None):/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py in _call_flat(self, args, capture_inputs, canceling_manager)
1690 # 没有磁带在看;跳到运行函数。
第1691章返回self._build_call_outputs(self._inference_function.call(->1692 ctx,args,cancellation_manager=cancellation_manager))1693
forward_backward = self._select_forward_and_backward_functions(
1694 args,/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py in call(self, ctx, args, cancel_manager) 543 个输入=args, 544 attrs=("executor_type", executor_type, "config_proto ", 配置), --> 545 ctx=ctx) 546 else: 547 输出 = execute.execute_with_cancellation(
/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name) 65 else: 66 message = e.message ---> 67 Six.raise_from(core._status_to_exception(e.code, message), None) 68 除了 TypeError as e: 69 keras_symbolic_tensors = [
/anaconda3/lib/python3.7/site-packages/six.py in raise_from(value, from_value)
AlreadyExistsError:资源__per_step_0/sequential/bidirectional/forward_lstm/while_grad/body/_429/gradients/AddN_13/tmp_var/N10tensorflow19TemporaryVariableOp6TmpVarE [[{{节点顺序/双向/forward_lstm/while_grad/body/_429/gradients/AddN_13/tmp_var}}]] [操作:__inference_distributed_function_12060]
函数调用栈:distributed_function
tensorflow-datasets - 如果 a 被打乱,tf.data.Dataset.zip(a, b) 会改变元素的顺序
我正在准备一个数据集,然后在存储输出之前训练一个模型(出于知识蒸馏的目的)
为了以 tfrecords 格式存储它们,我需要使用 .zip() 函数。
我使用以下代码重现了错误/错误。我的实际训练文件有数百行,所以我没有在这里包含它们。
我使用张量流 2.1。和 ubuntu 18.04 上的 python 3.7
我无法解决的问题是:
数据被打乱(没关系)。但是在压缩后,元组的顺序彼此不同(这是不行的)。
代码片段的输出显示每行的元素不匹配。(例如第 1 行:3 应该映射到 3)
python - jupyter notebook 内核在运行 UNet 时死机
我正在运行我的代码以tensorflow=2.0.0
使用 jupyter notebook 运行 UNet。当我升级到tensorflow=2.1.0
我的代码时会注意运行。在第一个时代结束之前,我收到一条消息说The kernel appears to have died. It will restart automatically.
。UNetMirroredStrategy()
用于将 UNet 分发到 GPU。MirroredStrategy()
当我删除并在单 GPU 上运行时,我没有收到此错误。知道为什么tensorflow=2.1.0
会导致这个问题吗?