标签: tf.keras

警告:tensorflow:sample_weight 模式被强制从 ... 到 ['...']

使用.fit_generator()or训练图像分类器.fit()并将字典传递给class_weight=作为参数。

我在 TF1.x 中从未出错,但在 2.1 中,我在开始训练时得到以下输出:

WARNING:tensorflow:sample_weight modes were coerced from
  ...
    to  
  ['...']
Run Code Online (Sandbox Code Playgroud)

将某物从 强制...到是什么意思['...']

了解关于这一警告源tensorflow的回购是在这里,摆放的意见是:

尝试将 sample_weight_modes 强制为目标结构。这隐含地取决于模型将其内部表示的输出展平的事实。

python keras tensorflow tf.keras tensorflow2.0

61
推荐指数
3
解决办法
2万
查看次数

自定义 TensorFlow Keras 优化器

假设我想编写一个符合tf.kerasAPI的自定义优化器类(使用 TensorFlow version>=2.0)。我对记录在案的方法与实现中的方法感到困惑。

tf.keras.optimizers.Optimizer 状态的文档,

  ### Write a customized optimizer.
  If you intend to create your own optimization algorithm, simply inherit from
  this class and override the following methods:

    - resource_apply_dense (update variable given gradient tensor is dense)
    - resource_apply_sparse (update variable given gradient tensor is sparse)
    - create_slots (if your optimizer algorithm requires additional variables)
Run Code Online (Sandbox Code Playgroud)

不过,目前的tf.keras.optimizers.Optimizer实现没有定义resource_apply_dense方法,但它确实定义了一个私人的前瞻性_resource_apply_dense方法存根。同样,没有resource_apply_sparseorcreate_slots方法,但有_resource_apply_sparse方法存根_create_slots方法调用

在官方 …

python deep-learning tensorflow tf.keras tensorflow2.x

34
推荐指数
2
解决办法
3844
查看次数

我应该对所有函数使用 @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用于所有功能?

keras tensorflow tf.keras tensorflow2.0 tensorflow2.x

24
推荐指数
2
解决办法
5362
查看次数

Keras - 验证损失和准确性停留在 0

我正在尝试为 Tensorflow keras 中的二元分类训练一个简单的 2 层全连接神经网络。我已经使用 sklearn 的train_test_split().

当我打电话时model.fit(X_train, y_train, validation_data=[X_val, y_val])它显示所有时期的验证损失和准确性为 0,但它训练得很好。

model.fit 调用和详细日志的屏幕截图

此外,当我尝试在验证集上对其进行评估时,输出非零。

model.evaluate 函数调用的屏幕截图

有人可以解释为什么我在验证时遇到这个 0 loss 0 准确度错误。谢谢你的帮助。

以下是此错误的完整示例代码 (MCVE):https ://colab.research.google.com/drive/1P8iCUlnD87vqtuS5YTdoePcDOVEKpBHr?usp=sharing

python machine-learning keras tensorflow tf.keras

18
推荐指数
1
解决办法
8285
查看次数

运行 Tensorflow 2.0 代码会给出“ValueError: tf.function-decorated function试图在非第一次调用时创建变量”。我究竟做错了什么?

error_giving_notebook

非问题笔记本

可以看出,我在“error_giving_notebook”中使用了 tf.function 装饰器,它抛出了 ValueError 而同一个笔记本除了删除 tf.function 装饰器之外没有任何更改,在“non_problematic_notebook”中运行流畅。原因是什么?

deep-learning keras keras-layer tf.keras tensorflow2.0

16
推荐指数
2
解决办法
4万
查看次数

InvalidArgumentError:loc 处需要可广播形状(未知)

背景

我对 Python 和机器学习完全陌生。我只是尝试根据在互联网上找到的代码建立一个 UNet,并希望将其适应我正在处理的情况。当尝试使用.fitUNet 来训练数据时,我收到以下错误:

InvalidArgumentError:  required broadcastable shapes at loc(unknown)
     [[node Equal (defined at <ipython-input-68-f1422c6f17bb>:1) ]] [Op:__inference_train_function_3847]
Run Code Online (Sandbox Code Playgroud)

当我搜索它时,我得到了很多结果,但大多数都是不同的错误。

这是什么意思?更重要的是,我该如何解决这个问题?

导致错误的代码

该错误的上下文如下:我想分割图像并标记不同的类。我为训练、测试和验证数据设置了目录“trn”、“tst”和“val”。该dir_dat()函数适用于获取相应数据集os.path.join()的完整路径。这 3 个文件夹中的每一个都有每个类的子目录,并用整数标记。在每个文件夹中,都有一些相应类别的图像。.tif

我定义了以下图像数据生成器(训练数据稀疏,因此增强):

classes = np.array([ 0,  2,  4,  6,  8, 11, 16, 21, 29, 30, 38, 39, 51])
bs = 15 # batch size

augGen = ks.preprocessing.image.ImageDataGenerator(rotation_range = 365,
                                                   width_shift_range = 0.05,
                                                   height_shift_range = 0.05,
                                                   horizontal_flip = True,
                                                   vertical_flip = True,
                                                   fill_mode = "nearest") \
    .flow_from_directory(directory = dir_dat("trn"), …
Run Code Online (Sandbox Code Playgroud)

python neural-network conv-neural-network tensorflow tf.keras

16
推荐指数
3
解决办法
5万
查看次数

Keras中的顺序模型是什么意思

我最近开始使用 Tensorflow 进行深度学习。我发现这个说法model = tf.keras.models.Sequential() 有点不同。我不明白这到底是什么意思,还有其他深度学习模型吗?我在 MatconvNet(卷积神经网络的 Matlab 库)上做了很多工作。从未在其中看到任何顺序定义。

python keras tensorflow tf.keras

15
推荐指数
3
解决办法
2万
查看次数

带 keras.utils.Sequence 对象或 tf.data.Dataset 的输入管道?

我目前正在使用一个tf.keras.utils.Sequence对象为 CNN 生成图像批次。我正在使用 Tensorflow 2.2 和Model.fit模型的方法。当我拟合模型时,当我设置时use_multiprocessing=True,在每个纪元中都会抛出以下警告tf.keras.model.fit(...)

WARNING:tensorflow:multiprocessing can interact badly with TensorFlow,
 causing nondeterministic deadlocks. For high performance data pipelines tf.data is recommended
Run Code Online (Sandbox Code Playgroud)

该模型优化得很好,正如文档所预期的那样,而且我使用的是Sequence基于生成器的事实。但是,如果use_multiprocessing要使用已弃用的功能来代替tf.data对象,我想使用最新的输入管道。我目前使用以下tf.keras.utils.Sequence基于生成器的灵感来自这篇关于分区大型数据集的良好实践的文章:https : //stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly

class DataGenerator(keras.utils.Sequence):
'Generates data for Keras'
def __init__(self, list_IDs, labels, data_dir, batch_size=32, dim=(128,128), n_channels=1,
             n_classes=2, shuffle=True, **augmentation_kwargs):
    'Initialization'
    self.dim = dim
    self.batch_size = batch_size
    self.labels = labels
    self.list_IDs = list_IDs
    self.data_dir = data_dir
    self.n_channels = n_channels
    self.n_classes …
Run Code Online (Sandbox Code Playgroud)

tensorflow tf.keras tensorflow2.x

15
推荐指数
1
解决办法
3311
查看次数

如何在 TF 2.0 / 1.14.0-eager 和自定义训练循环(梯度磁带)中执行分布式训练的梯度累积?

背景:我有一个模型,我正试图将它移植到TF 2.0一些甜蜜的急切执行上,但我似乎无法弄清楚如何进行分布式训练(4 个 GPU)并同时执行梯度累积。

问题:

  • 我需要能够使用带有梯度磁带的自定义训练循环,因为我有一个复杂的多模型问题(几个输入模型和输出模型一起训练),我不需要二阶梯度

  • 使用我的模型的大小(中等大小,类似于中型变压器),我无法使用 4 个 GPU 获得大于 ~32 的批量大小,这是我可以获得的最大实例,遗憾的是,这些确实是旧的 11GB K80 是因为 Azure 似乎认为 Google 甚至不再免费赠送的 GPU 已经足够好了......

  • 我有一个需要非常大批量的数据集,因为我必须考虑到非常大的不平衡(我也在使用权重和焦距损失 ofc),因此我需要执行 4-8 步梯度累积来平滑梯度。

我已经阅读了分布式训练循环指南并设法实现了它:https : //www.tensorflow.org/beta/tutorials/distribute/training_loops

我还在 TF 2.0 中为自定义训练循环实现了梯度累积,并且tf.kerashttps : //colab.research.google.com/drive/1yaeRMAwhGkm1voaPp7EtFpSLF33EKhTc

tensorflow tf.keras tensorflow2.0

14
推荐指数
1
解决办法
875
查看次数

Keras 中的 MaxPool 和 MaxPooling 层有什么区别?

我刚开始使用并注意到有两个层的 max-pooling 名称非常相似:MaxPoolMaxPooling. 我很惊讶我在谷歌上找不到这两者之间的区别;所以我想知道两者之间有什么区别(如果有的话)。

machine-learning deep-learning keras tensorflow tf.keras

14
推荐指数
2
解决办法
5321
查看次数