小编Con*_*nor的帖子

带 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
查看次数

渐近函数中的浮点问题逼近零 - Python

来自MATLAB的Python新手.

我正在使用幅度尺度函数的双曲正切截断.将0.5 * math.tanh(r/rE-r0) + 0.5函数应用到范围值数组时遇到问题r = np.arange(0.1,100.01,0.01).我0.0在接近零的一侧获得了函数的几个值,这在我执行对数时会导致域问题:

P1 = [ (0.5*m.tanh(x / rE + r0 ) + 0.5) for x in r] # truncation function
Run Code Online (Sandbox Code Playgroud)

我用这个解决方法:

P1 = [ -m.log10(x) if x!=0.0 else np.inf for x in P1 ]
Run Code Online (Sandbox Code Playgroud)

这对我正在做的事情已足够,但它有点像创可贴解决方案.

根据数学显性的要求:

在天文学中,幅度尺度大致如下:

mu = -2.5log(flux) + mzp # apparent magnitude
Run Code Online (Sandbox Code Playgroud)

其中mzp是每秒看到1个光子的幅度.因此,更大的通量等于更小(或更负)的视在幅度.我正在为使用多个组件功能的源制作模型.防爆.具有不同sersic索引的两个sersic函数,P1在内部组件1-P1上具有外部截断,在外部组件上具有内部截断.这样,当将截断函数添加到每个分量时,由半径定义的幅度将变得非常大,因为mu1-2.5*log(P1)在P1渐近逼近零时有多小.

TLDR:我想知道的是,是否存在一种保留浮点的方法,其精度不足以与零区分(特别是在渐近逼近零的函数的结果中).这很重要,因为在获取这些数字的对数时,结果就是域错误.

非对数P1中输出之前的最后一个数字开始读取零5.551115123125783e-17,这是一个常见的浮点算术舍入误差结果,其中所需的结果应为零.

任何投入将不胜感激.

@user:Dan没有放完我的整个脚本:

xc1,yc1 = 103.5150,102.5461;
Ee1 = 23.6781;
re1 = …
Run Code Online (Sandbox Code Playgroud)

python math rounding-error floating-accuracy hyperbolic-function

6
推荐指数
1
解决办法
637
查看次数