问题标签 [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 投票
1 回答
7736 浏览

python - Keras 2 fit_generator UserWarning: `steps_per_epoch` 与 Keras 1 参数 `samples_per_epoch` 不同

我在 Jupyter Notebook 中使用带有 Python 3 内核的 Keras 2.0.8。我的后端是 TensorFlow 1.3,我正在 Mac 上开发。

每当我使用 fit_generator() 时,我都会收到以下警告:

/Users/username/anaconda/envs/tensorflow/lib/python3.6/site-packages/ipykernel/ main .py:5: UserWarning: Keras 2 参数的语义与 Keras 1 参数的语义steps_per_epoch不同samples_per_epochsteps_per_epoch是在每个时期从生成器中提取的批次数。基本上steps_per_epoch = samples_per_epoch/batch_size。同样nb_val_samples->validation_stepsval_samples->steps参数也发生了变化。相应地更新您的方法调用。/Users/username/anaconda/envs/tensorflow/lib/python3.6/site-packages/ipykernel/ main .py:5:用户警告:更新您fit_generator对 Keras 2 API 的调用:fit_generator(<keras.pre..., steps_per_epoch=60000, validation_data=<keras.pre..., epochs=1, validation_steps=10000)

下面是我的模型的代码(简单的 MNIST 线性分类器,但我使用的每个模型都会收到此警告):

这是我的 fit_generator() 调用:

我明白这个警告告诉我什么。就我而言,这不是问题。我怎样才能摆脱它?

0 投票
1 回答
337 浏览

tensorflow - 创建使用 keras 减小通道大小的自定义激活时出错

我使用 keras 创建了一个自定义激活函数,它将通道大小减少了一半(最大特征图激活)。

这是代码的一部分:

当我编译这段代码时,我收到以下错误:

此错误来自最后一行代码。激活后,通道长度从 32 减少到 16。但是下一层会自动将通道长度视为 32(第一层中的过滤器数量)而不是 16。我尝试在第二个卷积层中添加 input_shape 参数来定义输入形状为 (513,211,16)。但这也给了我同样的错误。激活后我应该怎么做才能将张量的形状传递到下一层?

谢谢

0 投票
1 回答
4679 浏览

deep-learning - MaxPooling2D 后的图像形状,填充 ='same'——在卷积自动编码器中逐层计算形状

非常简单地说,当我在 Keras 代码中使用时,我的问题涉及到图像大小与 maxpool 层之后的输入图像大小不同padding = 'same'。我正在浏览 Keras 博客:在 Keras 中构建自动编码器。我正在构建卷积自动编码器。自编码器代码如下:

根据autoencoder.summary(),第一Conv2D(16, (3, 3), activation='relu', padding='same')(input_layer)层之后的图像输出为 28 X 28 X 16,即与输入图像大小相同。这是因为填充是'same'.

下一层(第 3 层)是,MaxPooling2D((2, 2), padding='same')(x)。summary() 显示该层的输出图像大小为 14 X 14 X 16。但该层中的填充也是'same'. 那么为什么输出图像大小不保持为 28 X 28 X 16 并填充零?

此外,当来自其早期层上方的输入形状为 (16 X 16 X 8) 时,在第 12 层之后输出形状如何变为 (14 X 14 X 16) 尚不清楚。

`

0 投票
1 回答
1175 浏览

tensorflow - 使用带有 Keras 的 get_variable 创建自定义初始化程序时出错

我用 Keras 创建了一个自定义初始化程序。部分代码是:

当在卷积层中第二次调用“my_init”初始化程序时,它会抛出此错误:

不允许重用变量 P。有没有办法在每次调用中创建一个新变量?

0 投票
2 回答
5367 浏览

python - 如何在 Keras 中调整(插值)张量的大小?

我想通过插值(例如使用最近邻)将张量(层之间)的大小(无,2,7,512)调整为(无,2,8,512),类似于tf.image.resize_nearest_neighborTensorflow中可用的此功能.

有没有办法做到这一点?

我尝试直接使用 Tensorflow 函数tf.image.resize_nearest_neighbor并将张量传递给下一个 Keras 层,但是在下一层时抛出了这个错误:

AttributeError:“张量”对象没有属性“_keras_history”

我相信这是由于 Tensorflow 张量中缺少某些属性,这是有道理的,因为该层期望通过 Keras 张量。

0 投票
1 回答
1132 浏览

python - Keras 进度条在 Windows 10 上不起作用

我在 Windows 10 上遇到问题,Jupyter Notebook 中的 Python 3 正确显示 Keras 进度条。正如您从所附图像中看到的那样,输出都被连接为一个带有 verbose=1 的长字符串,而不是正确的退格和重置。我猜这个问题是笔记本没有正确解释 \b 字符,但我似乎找不到解决方法。有没有人遇到过类似的问题?我可以用 verbose=2 进行训练,但我真的很希望能够看到估计的剩余时间。其他帖子on here 建议进度条只是将每个批次放在新行上的问题,结果诊断是“似乎信息使进度条对于终端来说太长了,因此它会换行。” 所以解决方案是让终端更宽。但是,这(据我所知)在 jupyter 笔记本中是不可能的。任何人都可以提出任何替代方案来处理这个问题吗?

在此处输入图像描述

0 投票
1 回答
210 浏览

python - 将 keras.backend.conv2d 从 Keras 1.x 迁移到 2.x

我正在将一个项目从 Keras 1.x 迁移到 2.x。

在代码中,keras.backend.conv2d在 1.x 中运行良好的操作现在在 2.x 中崩溃。

输入张量的形状ab都是(1024, 4, 1, 1),输出张量的形状(1024, 1024, 1, 1)在 1.x 中。

使用 2.x 我收到以下错误:

我正在使用 Theano 后端,并设置channels_firstK.set_image_data_formatconv2d.

0 投票
1 回答
124 浏览

python - 为什么 2 个几乎相等的 Keras CNN 返回 2 个完全不同的结果

我正在解决句子级二进制分类任务。我的数据由 3 个标记子数组组成:左上下文、核心和右上下文。

我使用Keras设计了卷积神经网络的几种替代方案,并验证哪一种最适合我的问题。

我是 Python 和 Keras 的新手,我决定从更简单的解决方案开始,以测试哪些更改可以改善我的指标(准确度、精确度、召回率、f1 和 auc-roc)。第一个简化是关于输入数据:我决定忽略上下文来创建 Keras 的顺序模型:

如您所见,我使用固定大小的输入,因此我应用了填充预处理。我还使用了带有 Word2Vec 模型的嵌入层。

该模型返回以下结果:

我希望实现如何通过 Lambda 层在我的 CNN 中选择输入数据的子数组。我使用以下 Lambda 层定义:

这是我的新 CNN 的摘要(你可以看到它与以前的几乎相同):

但结果令人作呕,因为准确率停止在60%,而且很明显,就第一个模型结果而言,准确率、召回率和 f1 太低(< 0.10)。

我不知道发生了什么,我不知道这些网络是否比我想象的更加不同。

关于这个问题的任何线索?

0 投票
1 回答
379 浏览

deep-learning - 如何避免 Keras 中的 Flatten()

我正在使用 Keras 进行图像分类。有我的模型:

我想避免 Flatten() 因为在这种情况下我们会丢失一些空间信息。我看了一些教程,但都使用了 Flatten()。是否可以改用反卷积之类的东西?

0 投票
3 回答
1934 浏览

python - 在 Keras 中重塑中间层

我有一个问题要在 Convolution1D 层之后重塑中间层。卷积层的输出是 (None, 15, 30),我想将其重塑为 (None, 15, 30, 1)。这是一段代码:

当我运行这个模型时,我得到以下错误:

我不明白为什么会出现此错误,因为形状的数字仍然相同: 15*30 = 15*30*1

为了更清楚地举一个例子,我想把这个变成:

进入那个:

知道我的代码有什么问题吗?

提前致谢。