问题标签 [keras-2]

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 投票
0 回答
555 浏览

python - Keras:将现有权重加载到 Batchnormalization 层中

我在一个.h5文件中有一个完全卷积的预训练模型。现在我想更改输入分辨率并再次训练。

我目前的方法是遍历所有层,创建一个新层并分配预训练的权重。

这是一个最小的示例:

批量标准化的代码失败。错误信息比较长,关键问题似乎是:

ValueError: Shapes must be equal rank, but are 1 and 0 for 'batch_normalization_3/Assign' (op: 'Assign') with input shapes: [16], [].

完整的错误消息在 pastebin 上:https ://pastebin.com/NVWs4tq2

如果我在批处理规范化的构造函数中删除 weights 参数,则代码可以正常工作。我已经查看了我试图在构造函数中提供的权重以及如果没有提供权重则分配的权重。形状是相同的。

如何将权重加载到 Batchnormalization 中?

0 投票
1 回答
462 浏览

optimization - 使用 keras 的自定义交替更新规则

我想对 keras 使用交替更新规则。即每批次我想调用一个常规的基于梯度的步骤,然后调用一个自定义步骤。

我考虑过通过继承优化器或回调来实现它(并使用批量调用)。但是,两者都不会,因为它们都缺少批处理数据和批处理标签(我需要两者)。

关于如何使用 keras 实现自定义交替更新的任何想法?

如果需要,我不介意直接调用 tensorflow 特定的方法,只要我可以继续使用用 keras 框架包装的项目(使用 model.fit、model.predict ..)

0 投票
1 回答
149 浏览

machine-learning - 当层不可训练时拟合 keras 模型会产生不一致的结果

我试图在没有训练和更新权重的情况下确定模型的准确性,因此我将所有层设置为trainable = False.

当我fit_generator在带有 的生成器上运行时shuffle = False,每次都会得到一致的结果。

当我fit_generator在带有 的生成器上运行时shuffle = True,结果会跳跃一下。鉴于输入数据是相同的,并且模型没有训练,我希望模型的内部状态不会改变,并且无论排序如何,同一数据集上的准确性都是相同的。

然而,这种排序依赖意味着模型中的某种状态正在发生变化,尽管trainable = False. 导致这种情况的模型内部发生了什么?

0 投票
1 回答
985 浏览

keras-2 - 分类图像分类总是预测一个类别,尽管计算的准确率达到 100%

我按照 Keras 猫/狗图像分类教程 Keras 图像分类教程 ,发现与报告值相似的结果。然后,我从该教程教程示例 1 代码中的第一个示例中获取代码,稍微修改了几行,并为灰度图像数据集(约 15 万张图像,跨越 7 个类)训练了模型。

这给了我很好的初步结果(准确率约为 84%),对此我很满意。

接下来我尝试自己实现图像批处理生成器,这就是我遇到问题的地方。简而言之,代码似乎运行良好,除了模型报告的准确率在两个时期内迅速达到 >= 99%。由于数据集中的噪声,这种准确度是不可信的。在使用经过训练的模型预测一批新数据(训练或验证数据集之外的图像)后,我发现模型总是预测第一类(即 [1.,0.,0.,0.,0., 0.,0.].损失函数迫使模型 100% 地预测单个类,即使我传入的标签分布在所有类中。

经过 28 个 epoch 的训练,我看到以下输出:

当我检查教程代码中的批处理生成器输出并比较我的批处理生成器输出时,两个生成器之间的形状、数据类型和值范围是相同的。我想强调一下,生成器传递来自每个类别的 y 标签,而不仅仅是 array([ 1.., 0., 0., 0., 0., 0., 0.], dtype=float32)。因此,我对自己做错了什么感到迷茫。

自从我几天前发布这段代码以来,我使用了默认的 Keras 图像生成器,并成功地在相同的数据集和相同的网络架构上训练了网络。因此,关于我如何在生成器中加载和传递数据的某些内容一定是不正确的。

这是我实现的代码:

0 投票
1 回答
1108 浏览

tensorflow - Keras 回调 Tensorboard 多输出错误

在使用 callbacks.TensorBoard 时,我无法弄清楚是什么导致了多输出 Keras 模型出现此错误。

错误

“形状 [-1] 具有负尺寸”是什么意思?我还尝试使用 callbacks.Tensorboard 处理每个输出,并且没有发生任何错误。也搜索“节点:output_power_sample_weights”但没有结果。

regr.summary()

0 投票
1 回答
701 浏览

python-3.x - 具有可变大小图像的二维卷积神经网络

我使用 Theano 后端实现了一个带有 Keras 的卷积自动编码器。我正在改变我的方法来尝试处理不同尺寸的图像。只要我使用 numpy 的stack函数来构建数据集(相同大小的图像),我就很成功。但是,对于不同大小的图像,我们不能使用stack,并且fit需要一个 numpy 数组。所以我改为fit_generator避免尺寸检查。问题是最后一层期望 16 作为输入中的最后一个维度,我不明白为什么它会获取原始图像的维度。

看看下面的代码和错误输出。

回溯(最近一次通话最后):

文件“stacko.py”,第 107 行,validation_steps=1

包装器中的文件“/usr/local/lib/python3.5/dist-packages/keras/legacy/interfaces.py”,第 88 行,返回 func(*args, **kwargs)

文件“/usr/local/lib/python3.5/dist-packages/keras/engine/training.py”,第 1847 行,在 fit_generator val_x、val_y、val_sample_weight 中)

文件“/usr/local/lib/python3.5/dist-packages/keras/engine/training.py”,第 1315 行,在 _standardize_user_data exception_prefix='target')

文件“/usr/local/lib/python3.5/dist-packages/keras/engine/training.py”,第 139 行,在 _standardize_input_data str(array.shape))

ValueError:检查目标时出错:预期 conv2d_7 的形状为 (None, 1, None, 16) 但数组的形状为 (1, 1, 10, 15)

0 投票
2 回答
12662 浏览

python - 在 Keras 中,验证准确度始终高于训练准确度

我正在尝试使用 mnist 数据集训练一个简单的神经网络。由于某种原因,当我获取历史记录(从model.fit返回的参数)时,验证准确率高于训练准确率,这真的很奇怪,但是如果我在评估模型时检查分数,我会得到更高的分数训练准确率高于测试准确率。

无论模型的参数如何,这种情况每次都会发生。另外,如果我使用自定义回调并访问参数“acc”和“val_acc”,我会发现同样的问题(数字与历史记录中返回的数字相同)。

请帮我!我究竟做错了什么?为什么验证准确率高于训练准确率(可以看到我在看loss的时候也有同样的问题)。

这是我的代码:

我得到的输出如下:

在这里你可以看到我得到的图: Training and Validation accuracy and loss plots

我不确定这是否相关,但我使用的是 python 3.5 和 keras 2.0.4。

0 投票
1 回答
225 浏览

tensorflow - 我可以互换使用 Tensorflow 和 Keras 吗?

我正在使用 l2_regularization Tensorflow 有 - tf.nn.l2_loss 我可以使用这个吗?

  1. K.sum(K.square(K.abs(权重)))
  2. tf.nn.l2_loss

我可以在 Keras(Tensorflow 后端)中互换使用它吗?

0 投票
1 回答
205 浏览

keras - 如何在 Keras 中使用 Add

在 keras 说你有

你想添加这两个层,你必须使用 keras.layers.merge 中的 Add 并且你不能使用功能 api。

Add 不接受任何输入,所以我看不出它如何帮助设置图表。我正在使用 keras 2.06。

0 投票
1 回答
877 浏览

merge - Keras 2.0 中的自定义合并层

在 keras 1 中,我曾经写过

但现在在 keras 2.0 Merge 已被弃用,您只能添加预定义的函数,如 add、average、concatenate ......

我的问题是如何在 keras 2.0 中添加自定义合并功能