问题标签 [convolutional-neural-network]

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 投票
2 回答
922 浏览

python - 使用 TENSORFLOW 进行多标签分类---COST 和权重中的 NaN

情境化
我正在构建一个用于多标签分类的神经网络:识别图像中的标签(一个人穿着什么衣服,它的颜色等)。我想使用纯 tensorflow(而不是 kears 之类的 API),以便对我的指标有更大的灵活性。
PS:用于这个 tensorflow 模型的数据是用 Keras 构建的模型测试的,并没有产生我将在这里公开的问题。

数据
我的输入数据是 (X,Y):X 的形状为 (1814,204,204,3),Y 的形状为 (1814,39)。所以基本上 X 是一组图像,Y 是与每个图像相关联的标签,这些标签将用于监督学习过程。
总共有 39 个标签,因此对于每个大小为 (1,204,204,3) 的图像,我们关联一个形状为 (1,39) 的向量:这 39 个值可以是 0 或 1。1,如果在该图像中识别出相应的标签, 否则。可以同时识别多个标签,这意味着我们没有使用一种热编码,也不是多类分类的情况!
PS:我已经对我的数据进行了标准化以便适合 [0,1]

我做了什么
1.我做 的第一件事是构建我的分类器的抽象版本(这是一个 CNN):这是我的 CNN 的结构:

对于给定大小的数据集 (?,204,204,3):这是通过不同层的数据流:

这是构建CNN结构的代码

2. 现在,我正在定义我的成本函数和我的优化器

  • 对于成本函数,我使用cross_entropy_with_logits 并独立计算批量样本上所有输出分量的平均值。例如,如果我有一个大小为 10 的批次,模型的输出形状为 (10,39),因此对于成本,我们将有一个形状为 (1,39) 的向量(对于每个标签,我们计算平均值批次中的不同示例)
  • 对于优化器,我使用的是亚当优化器。

这是计算成本和优化器的代码。

PS:tf.reduce_mean 中的 'axis=0' 允许我独立计算每个标签,即批次示例的平均值!

3. 定义占位符,初始化模型和训练。
一旦定义了具有不同参数的抽象模型,我创建了占位符并构建了计算图,然后我初始化了权重并开始了训练。 问题: 随着优化的进行,我开始为不同层中的权重和成本函数中的 NaN 设置 NaN 值。因此,Reflexe 首先尝试调试并了解会发生什么。
我尝试测试一个简单的案例,如下所示:
初始化权重--->计算成本并打印它(也打印权重)--->做一个优化--->计算成本并打印它(也打印权重)
结果:
第一次打印很好我有真正的价值(很明显)。但是在第一次优化之后:我得到了成本的 NaNs 值。为什么我的优化器在一个优化步骤后使成本变为 NaN !
这是测试的代码!(X_train 和 Y_train 的形状为 (1269, 204, 204, 3) 和 (1269,39) :我只取每个元素的 4 个元素进行测试)

欢迎任何帮助。

0 投票
2 回答
682 浏览

python - 为 Keras 卷积网络指定一些不可训练的过滤器

我想开发一个卷积网络架构,在第一层(在这种情况下为 Conv1D),我想预先指定一些不可训练的固定滤波器,同时还有几个模型可以学习的可训练滤波器。这可能吗?如何做到这一点?

我的直觉是我可以制作两个单独的 Conv1D 层——一个可训练的,一个不可训练的——然后以某种方式将它们连接起来,但我不确定这在代码中会是什么样子。另外,对于不可训练的过滤器,我如何预先指定权重?

0 投票
1 回答
1809 浏览

deep-learning - Unet分割模型预测空白图像?

我正在使用 Unet 架构进行肺分割,它向我展示了更好的训练和 Val 损失,但是当我调用预测函数并将训练集的一张图像作为输入时。它给了我空白图像作为输出。我理解为什么在它显示时这样做良好的验证准确性。我正在使用 keras

0 投票
0 回答
67 浏览

python - AttributeError: 'Tensor' object has no attribute ' Keras CNN autoencoder

I am trying to program a convolutional autoencoder with my 2D array data (28x28). Here is the link I referred. https://blog.keras.io/building-autoencoders-in-keras.html

The only deference between the reference and mine is either MNIST or mine.

The problem should be caused by the data split "X_train..., X_test..." sections. Since I have been having a trouble with if I use skitlearn train_test_split algorism.

I know what it the problem. I just do not know how to fix it. Thank you.

0 投票
0 回答
1329 浏览

keras - Keras 多输出模型

我正在使用 Keras 功能 API 构建具有多个(五个)输出和相同输入的模型,以便同时预测数据的不同属性(在我的例子中是图像)。

该模型的摘要如下(大写字母是在预训练的 VGG16 之上添加的层):

模型摘要

输入 CNN 的数据形状如下:

当我只将一个输出放到我的网络中时,可以毫无问题地进行训练,但是当所有输出(甚至其中的 2 个)都存在时,我收到以下错误:

知道我做错了什么吗?

文档中是否还有任何工作示例描述了多输出模型的类似情况?

0 投票
1 回答
1463 浏览

python - 继续用 keras 中保存的模型训练 CNN

我用 keras 库训练 CNN 模型,纪元数为 25。我可以在第一次运行 10 个纪元的模型,然后用这些代码行保存模型:

然后我重新启动 python 并继续使用相同的数据集运行接下来的 15 个 epoch,如下面的代码:

继续训练就够了吗?或者我必须执行任何其他步骤才能继续工作。我非常感谢任何支持。

0 投票
0 回答
230 浏览

tensorflow - conv2d 不起作用

我在 tensorflow 中训练 CNN,但程序似乎停留在第一个 tf.nn.conv2d 步骤。我已经从 keras 导入了 cifar 10 数据集并在 floydhub 中运行我的代码。我还没有开始会话,这只是计算图。 链接到完整的笔记本

这是卡住的部分:

编辑:-

这就是我导入数据集的方式

用于训练图像和标签的占位符

权重初始化`

0 投票
1 回答
1152 浏览

python - 如何让 Keras 在密集层中有两个不同的初始化器?

我有两个单独设计的 CNN,用于相同数据的两个不同特征(图像和文本),输出有两个类

在最后一层:

对于图像(resnet),我想使用“he_normal”作为初始化器

但对于文本 CNN,我想使用默认的“glorot_normal”

flatten1 和 flatten2 的尺寸:

flatten_1(展平)(无,512)

flatten_2(展平)(无,192)

无论如何我可以连接这两个扁平层并有一个大小为 192+512 = 704 的长密集层,其中第一个 192 和第二个 512 有两个单独的 kernel_initializer,并产生一个 2 类输出?

像这样的东西:

编辑:我想我已经通过以下代码完成了这项工作(感谢@Aechlys):

我必须手动添加形状大小 512 和 192,因为我无法通过代码获得 flatten1 和 flatten1 的大小

,这给了我[无,无],虽然它应该是[无,512],除了它应该没问题

0 投票
1 回答
2362 浏览

neural-network - 卷积神经网络的归一化方法

共有三种常见的图像数据归一化方法,它们是

我在不同的 CNN 教程或帖子中发现,人们可能会使用其中一个来规范化数据。但是我对它们有点困惑,我应该如何在不同的情况下选择一个?

感谢您提前提供任何解释。

0 投票
1 回答
1621 浏览

merge - merge different models with different inputs Keras

I would like to train two different Conv models in Keras with different input dimensions.

I have:

Now I would merge the two dense layers at the end of both Conv net.

How I should do?