标签: conv-neural-network

Keras binary_crossentropy vs categorical_crossentropy性能?

我正在尝试培训CNN按主题对文本进行分类.当我使用binary_crossentropy时,我得到~80%acc,而categorical_crossentrop我得到~50%acc.

我不明白为什么会这样.这是一个多类问题,这是否意味着我必须使用分类,二进制结果是没有意义的?

model.add(embedding_layer)
model.add(Dropout(0.25))
# convolution layers
model.add(Conv1D(nb_filter=32,
                    filter_length=4,
                    border_mode='valid',
                    activation='relu'))
model.add(MaxPooling1D(pool_length=2))
# dense layers
model.add(Flatten())
model.add(Dense(256))
model.add(Dropout(0.25))
model.add(Activation('relu'))
# output layer
model.add(Dense(len(class_id_index)))
model.add(Activation('softmax'))
Run Code Online (Sandbox Code Playgroud)

然后

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

要么

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

machine-learning neural-network deep-learning conv-neural-network keras

130
推荐指数
7
解决办法
14万
查看次数

如何验证CuDNN安装?

我搜索了很多地方,但我得到的是如何安装它,而不是如何验证它是否已安装.我可以验证我的NVIDIA驱动程序已安装,并且已安装CUDA,但我不知道如何验证是否已安装CuDNN.非常感谢帮助,谢谢!

PS.
这是为了实现caffe.目前一切正常,没有启用CuDNN.

cuda computer-vision caffe conv-neural-network cudnn

128
推荐指数
12
解决办法
30万
查看次数

Tensorflow Strides Argument

我想了解的进步在tf.nn.avg_pool,tf.nn.max_pool,tf.nn.conv2d说法.

文件反复说

strides:长度> = 4的整数列表.输入张量的每个维度的滑动窗口的步幅.

我的问题是:

  1. 4+整数中的每一个代表什么?
  2. 为什么他们必须有步幅[0] =步幅[3] = 1?
  3. 这个例子中我们看到tf.reshape(_X,shape=[-1, 28, 28, 1]).为什么-1?

遗憾的是,使用-1重新整形的文档中的示例并不能很好地转换为这种情况.

python convolution neural-network conv-neural-network tensorflow

112
推荐指数
3
解决办法
4万
查看次数

对卷积神经网络中一维,二维和三维卷积的直观理解

任何人都可以通过实例清楚地解释CNN(深度学习)中的1D,2D和3D卷积之间的区别吗?

signal-processing machine-learning convolution deep-learning conv-neural-network

100
推荐指数
3
解决办法
6万
查看次数

订购批量标准化和退出?

最初的问题是关于TensorFlow实现的具体问题.但是,答案仅适用于实施.这个一般答案也是TensorFlow的正确答案.

在TensorFlow中使用批量标准化和dropout(特别是使用contrib.layers)时,我是否需要担心排序?

似乎有可能如果我使用dropout然后立即批量标准化可能会有麻烦.例如,如果批量标准化的偏移训练到训练输出的较大比例数,但是然后将相同的偏移应用于较小的(由于具有更多输出的补偿)标度数而在测试期间没有丢失,那么转移可能会关闭.TensorFlow批量标准化层是否会自动对此进行补偿?或者这不是因为某些原因我不在乎?

此外,在将这两者结合使用时还有其他需要注意的问题吗?例如,假设我使用他们以正确的顺序在问候上述(假设有一个正确的顺序),可以存在与使用分批正常化和漏失在多个连续层烦恼?我没有立即看到问题,但我可能会遗漏一些东西.

非常感谢!

更新:

实验测试似乎表明排序确实很重要.我运行了相同的网络两次,只有批量规范和退出反向.当辍学率在批量规范之前时,随着训练损失的减少,验证损失似乎在增加.在另一种情况下,他们都会倒下.但就我而言,动作很慢,所以在经过多次训练后情况可能会发生变化,这只是一次测试.一个更明确和知情的答案仍然会受到赞赏.

python neural-network conv-neural-network tensorflow

87
推荐指数
6
解决办法
5万
查看次数

Keras提前停止

我正在使用Keras为我的项目训练神经网络.Keras提供了早期停止的功能.我是否应该知道应该观察哪些参数以避免我的神经网络过度拟合使用早期停止?

python deep-learning conv-neural-network keras

78
推荐指数
1
解决办法
5万
查看次数

Google Deep Dream - 使用课程"控制梦想"

背景

我一直在玩,Deep DreamInceptionism使用Caffe框架来可视化层GoogLeNet,这是一个为Imagenet项目构建的架构,一个专为视觉对象识别而设计的大型可视化数据库.

Imagenet可以在这里找到:Imagenet 1000类.


为了探究架构并产生"梦想",我使用了三个笔记本:

  1. https://github.com/google/deepdream/blob/master/dream.ipynb

  2. https://github.com/kylemcdonald/deepdream/blob/master/dream.ipynb

  3. https://github.com/auduno/deepdraw/blob/master/deepdraw.ipynb


这里的基本思想是从模型或"指南"图像中提取指定图层中每个通道的一些特征.

然后我们将我们希望修改的图像输入到模型中,并在指定的同一层中提取特征(对于每个八度音阶),增强最佳匹配特征,即两个特征向量的最大点积.


到目前为止,我已经设法使用以下方法修改输入图像和控制梦想:

  • (a)将图层用作'end'输入图像优化的目标.(见功能可视化)
  • (b)使用第二图像来指导输入图像上的de优化目标.
  • (c)可视化Googlenet由噪声产生的模型类.

但是,我想要实现的效果介于这些技术之间,我没有找到任何文档,论文或代码.

期望的结果

要使一个属于给定'end'层的单个类或单元(a)引导优化目标(b)并使该类在输入图像上可视化(c):

一个例子,其中class = 'face'input_image = 'clouds.jpg':

在此输入图像描述 请注意:上面的图像是使用面部识别模型生成的,该模型未经过Imagenet数据集培训.仅用于演示目的.


工作代码

方法(a)

from cStringIO import StringIO
import numpy as np
import scipy.ndimage as nd
import PIL.Image
from IPython.display import clear_output, Image, display
from google.protobuf …
Run Code Online (Sandbox Code Playgroud)

deep-learning caffe conv-neural-network deep-dream imagenet

71
推荐指数
1
解决办法
1940
查看次数

如何告诉Keras根据损失值停止训练?

目前我使用以下代码:

callbacks = [
    EarlyStopping(monitor='val_loss', patience=2, verbose=0),
    ModelCheckpoint(kfold_weights_path, monitor='val_loss', save_best_only=True, verbose=0),
]
model.fit(X_train.astype('float32'), Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
      shuffle=True, verbose=1, validation_data=(X_valid, Y_valid),
      callbacks=callbacks)
Run Code Online (Sandbox Code Playgroud)

它告诉Keras在2个时期的损失没有改善时停止训练.但是我希望在损失变得小于某些常数"THR"之后停止训练:

if val_loss < THR:
    break
Run Code Online (Sandbox Code Playgroud)

我在文档中看到有可能进行自己的回调:http: //keras.io/callbacks/ 但是没有找到如何停止训练过程.我需要一个建议.

python machine-learning neural-network conv-neural-network keras

70
推荐指数
4
解决办法
4万
查看次数

卷积神经网络中的批量归一化

我是卷积神经网络的新手,只是想知道特征映射以及如何对图像进行卷积以提取特征.我很高兴知道在CNN中应用批量标准化的一些细节.

我读了本文https://arxiv.org/pdf/1502.03167v3.pdf和可以理解的BN算法应用于数据,但最终他们提到,当应用到CNN的轻微修改是必需的:

对于卷积层,我们还希望归一化遵循卷积属性 - 以便在不同位置对同一特征映射的不同元素以相同方式进行归一化.为实现这一目标,我们联合规范了所有地点的小批量激活.在Alg.1,我们令B是该组中跨越小批量的两个元件和空间位置的特征地图的所有值的 - 因此对于小批量大小p×Q的大小为m和特征映射的,我们使用的短跑运动员 - 小型m'= | B |的小批量 = m·pq.我们学习每个特征图的一对参数γ(k)和β(k),而不是每次激活.ALG.类似地修改图2,使得在推理期间,BN变换对给定特征图中的每个激活应用相同的线性变换.

当他们说"以不同位置的相同特征地图的不同元素以相同方式标准化"时,我完全感到困惑 "

我知道哪些特征映射意味着什么,不同的元素是每个特征映射中的权重.但我无法理解什么位置或空间位置意味着什么.

我根本无法理解下面的句子 "在Alg.1中,我们让B成为特征图中所有值的集合,跨越小批量和空间位置的元素"

如果有人冷静地阐述并用更简单的术语解释我,我会很高兴的

machine-learning computer-vision deep-learning conv-neural-network batch-normalization

54
推荐指数
3
解决办法
3万
查看次数

计算卷积层中的输出大小

如果神经网络卷积层的输入是大小为 128X128X3 的图像并对其应用 40 个大小为 5X5 的滤波器,则输出大小是多少?

python machine-learning deep-learning conv-neural-network

53
推荐指数
2
解决办法
8万
查看次数