问题标签 [tf.keras]

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.

0 投票
1 回答
2387 浏览

python - Keras 模型无法预测是否在线程中调用

我尝试在线程应用程序中使用 keras 和可用模型 VGG16 执行预测。但是,如果我在主线程中调用预测,一切正常。但是,如果我在线程函数内部进行预测(无论我使用threading, multiprocessing, ...),它只会在预测期间停止:

这是最小的示例:

USE_THREADING = False给我:

USE_THREADING = True失败)给了我:

0 投票
2 回答
1159 浏览

python - 训练集包含“标签”作为 keras 模型的输入

我看到如果输入列不是浮点值,我的 keras 模型不能很好地处理它们。我希望能够使用包含“标签”的列来训练模型,标签是指排序的 ID,或编码的字符串名称。理想情况下,它将能够将这些标签列集成到其模型中,从而决定这些分类列中的哪些值表示更高的准确性。

例如,我正在尝试预测比赛的结果(Win=1,Loss=0),我想在历史数据中包含“团队名称”和“教练名称”。理想情况下,该模型将确定哪些球队和教练更有可能获胜。

但是,当我运行model.fit并且 training_set 包含除 int/float 值以外的任何值(本质上是统计的,而不是分类的)时,它会为每个 epoch 生成相同的准确度,并具有非常高的损失分数。

这是我定义模型的方式:

如果我不包含任何分类数据,它会很好用,但我认为如果我能让它与分类数据一起工作,它会改进得更多。

0 投票
0 回答
255 浏览

tensorflow - Tensorflow 估计器无法收敛从 Keras 转换的模型(使用 binary_crossentropy 时)

我在 Tensorflow Estimators 中使用 model_to_estimator 功能被困了很长时间。问题似乎是 Keras 允许binary_crossentropy单个神经元 Dense 输出的损失。

就我而言,我正在提供一个 RNN 序列数据,我想弄清楚序列是否会导致转换。代码(也可以在https://colab.research.google.com/drive/194Puigi-LdzxZup6LNREk47l9uP0_Dx9找到)将是

这行得通,模型收敛并开始学习。

时期 100/100 - 2s - 损失:3.5754e-04 - acc:1.0000 - true_positives:3.2000 - true_negatives:496.7400 - false_positives:0.0000e+00 - false_negatives:0.0000e+00 - 召回:0.9400 - 精度:0.9400 - val_loss: 0.1281 - val_acc:0.9806 - val_true_positives:0.0000e+00 - val_true_negatives:490.3000 - val_false_positives:4.5000 - val_false_negatives:5.2000 - val_recall:0.0000e+00 - val_precision:0.0000e+00

你可以看到它大多猜测一个负面的结果,这是由于数据集的不平衡,可能是正确的做法。

现在将其转换为像这样的 Estimator 模型

重置模型并训练基于 Estimator 的版本后,模型不会收敛,但现在似乎只能预测真值

({'binary_accuracy':0.9865,'false_negatives_streaming':0.0,'false_positives_streaming':1979.0,'precision_streaming':0.0105,'recall_streaming':1.0,'true_negatives_streaming':0.0,'true_positives_streaming':21.0,'global_step':21.0} , []

现在我设法通过使用 Dense(2) 最后一层、单热编码标签并将损失函数切换到sparse_categorical_crossentropy...来实现这一点,但我真的宁愿保留单个输出类,因为它使我的下游 f1 - 分数和诸如此类的计算更容易。

一个启发性的猜测是 Estimator 未能将损失分配到单个密集输出层,Keras 以某种方式设法做到了这一点。

任何帮助将不胜感激

最佳实践

0 投票
2 回答
1904 浏览

python - 将 tf.contrib.opt.ScipyOptimizerInterface 与 tf.keras.layers 一起使用,损失不会改变

我想在 tensorflow 中使用外部优化器接口来使用牛顿优化器,因为 tf.train 只有一阶梯度下降优化器。同时,我想使用 tf.keras.layers 构建我的网络,因为在构建大型复杂网络时,它比使用 tf.Variables 更容易。我将通过以下简单的一维线性回归示例展示我的问题:

运行它时,损失根本没有改变。当使用 tf.train 中的任何其他优化器时,它工作正常。此外,当使用 tf.layers.Dense() 而不是 tf.keras.layers.Dense() 时,它确实可以使用 ScipyOptimizerInterface。所以真正的问题是 tf.keras.layers.Dense() 和 tf.layers.Dense() 之间有什么区别。我看到 tf.layers.Dense() 创建的变量是 tf.float32_ref 类型,而 tf.keras.layers.Dense() 创建的变量是 tf.float32 类型。就我现在而言,_ref 表明这个张量是可变的。所以也许这就是问题所在?但是话又说回来,来自 tf.train 的任何其他优化器都可以与 keras 层一起正常工作。

谢谢

0 投票
2 回答
648 浏览

tensorflow - Keras 如何处理单元格和隐藏状态(RNN、LSTM)的初始值以进行推理?

假设训练完成:Keras 在推理时(在 LSTM 和 RNN 层中)对第 0 个单元状态和隐藏状态使用什么值?我至少可以想到三种情况,但在文档中找不到任何确凿的答案:

(a) 初始状态被学习,然后用于所有预测

(b) 或者初始状态总是设置为零

(c) 初始状态总是随机的(希望不是……?)

0 投票
1 回答
20 浏览

machine-learning - 是否有任何库可以为 keras.Model.fit_generator 构建生成器?

keras.preprocessing.image.ImageDataGenerator用于为图像输入创建生成器。

是否有任何类似的库可用于正常的 numpy 数组输入?

0 投票
1 回答
3753 浏览

tensorflow - Tensorflow 与 Keras 中的 RNN,tf.nn.dynamic_rnn() 的贬值

我的问题是:tf.nn.dynamic_rnnkeras.layers.RNN(cell)真的与文档中所述相同吗?

我正计划构建一个 RNN,但是,似乎tf.nn.dynamic_rnn不赞成 Keras。

它特别指出:

警告:此功能已弃用。它将在未来的版本中删除。更新说明:请使用keras.layers.RNN(cell),相当于这个API

但是在可变序列长度的情况下,我看不出 API 是如何等效的!

在原始 TF 中,我们可以指定一个 shape 的张量(batch_size, seq_lengths)。这样,如果我们的序列是[0, 1, 2, 3, 4]并且批次中最长的序列大小为 10,我们可以用 0 填充它,并且[0, 1, 2, 3, 4, 0, 0, 0, 0, 0]我们可以说seq_length=5处理[0, 1, 2, 3, 4]

然而,在 Keras 中,这不是它的工作方式!我们可以做的是mask_zero=True在之前的层中指定,例如嵌入层。这也将掩盖第一个零!

我可以通过在整个向量中添加一个来绕过它,但是这是我在处理 using 之后需要做的额外预处理,tft.compute_vocabulary()它将词汇表单词映射到 0 索引向量。

0 投票
0 回答
184 浏览

tensorflow - tensorflow低级api,批量归一化问题

tf.layers.batch_normalization文档说它将在未来的版本中删除,并且应该被tf.keras.layers.BatchNormalization替换,但是我找不到使用 tensorflow 低级 api 替换功能的方法。

输出:

如果我们按照文档中的建议使用 keras

我们得到一个空输出:

由于 UPDATE_OPS 为空,因此模型无法在使用 keras 进行训练期间更新批归一化moving_avg_mean 和moving_avg_variance(导致更高的测试误差)。非常感谢任何如何解决这个问题的建议!

上面的例子取自一篇关于如何使用tf.layers.batch_normalization的旧帖子

0 投票
1 回答
1278 浏览

tensorflow - Keras(Tensorflow)重塑图层输入错误

我有一个重塑输入错误,我不知道为什么。请求的形状是 1058400,等于 (1, 21168) 乘以批量大小 50。我不明白的是 677376 的表观输入大小。我不知道这个值是从哪里来的。reshape 之前的图层是 flatten 图层,我在定义 Reshape 图层的目标形状时直接使用它的形状。

模型编译得很好,我使用 Tensorflow 作为后端,所以它是在运行时之前定义的。但是只有当我输入日期时才会出现错误。

代码:

概括:

编辑:

上述代码的错误:

0 投票
2 回答
5694 浏览

python - AttributeError:“顺序”对象没有属性“total_loss”

几天来,我一直在努力解决这个问题。我正在使用 tensorflow-gpu v1.13.1,我只能找到 2 个其他线程,甚至提到了类似的错误。

重新创建错误:

我正在尝试制作一个神经网络来将文件分类为恶意或非恶意。原始源码,X_train、y_train、X_test、y_test都是numpy数组。

这是我的错误:

回溯(最后一次调用):文件“C:/Users/Cody/Desktop/synopsys/train.py”,第 76 行,在 model.fit_generator(generate_arrays(X_train, y_train, 500), epochs=10, steps_per_epoch=1800 ) 文件“C:\Users\Cody\AppData\Local\conda\conda\envs\emberenv\lib\site-packages\tensorflow\python\keras\engine\training.py”,第 1426 行,在 fit_generator initial_epoch=initial_epoch 中)文件“C:\Users\Cody\AppData\Local\conda\conda\envs\emberenv\lib\site-packages\tensorflow\python\keras\engine\training_generator.py”,第 125 行,model_iteration 模型、模式、class_weight =class_weight) _make_execution_function 模型中的文件“C:\Users\Cody\AppData\Local\conda\conda\envs\emberenv\lib\site-packages\tensorflow\python\keras\engine\training_generator.py”,第 427 行。_make_fit_function() 文件“C:\Users\Cody\AppData\Local\conda\conda\envs\emberenv\lib\site-packages\tensorflow\python\keras\engine\training.py”,第 1926 行,在 _make_fit_function '_fit_function ', [self.total_loss] + metrics_tensors) AttributeError: 'Sequential' 对象没有属性 'total_loss'

非常感谢任何帮助,我已经被困在这个问题上太久了。