标签: convolution

CNN给出了有偏见的结果

我在CNN上使用二进制分类器.我有两个类别"我"和"其他".我有大约250张自己的图像和500张其他图像(随机面部数据库).我目前的图层实现非常简单

    self.model.add(Conv2D(128, (2, 2), padding='same', 
    input_shape=dataset.X_train.shape[1:]))
    self.model.add(Activation('relu'))
    self.model.add(MaxPooling2D(pool_size=(2, 2)))
    self.model.add(Dropout(0.25))

    self.model.add(Conv2D(64, (2, 2), padding='same'))
    self.model.add(Activation('relu'))
    self.model.add(MaxPooling2D(pool_size=(2, 2)))
    self.model.add(Dropout(0.25))

    self.model.add(Conv2D(32, (1, 1), padding='same'))
    self.model.add(Activation('relu'))
    self.model.add(MaxPooling2D(pool_size=(2, 2)))
    self.model.add(Dropout(0.5))
    self.model.add(Dense(512))
    self.model.add(Activation('relu'))
    self.model.add(Dropout(0.25))
    self.model.add(Dense(2)) # for two classes
    self.model.add(Activation('softmax'))
Run Code Online (Sandbox Code Playgroud)

我的网络达到了93%的准确率 在此输入图像描述

在此输入图像描述 我的问题是,当我使用这个网络预测面孔时,它总是将任何面部识别为我的面孔.我已经裁剪了面部,应用了gabor过滤器,但没有任何作用.任何建议将不胜感激.

随机面的预测结果:[KK代表我的脸]概率总是超过97%:

KK identified!
1/1 [==============================] - 0s
[[ 0.9741978  0.0258022]]
1/1 [==============================] - 0s

KK identified!
1/1 [==============================] - 0s
[[ 0.9897241   0.01027592]]
1/1 [==============================] - 0s
Run Code Online (Sandbox Code Playgroud)

我的图像预测结果:[KK代表我的脸]概率总是超过99%:

KK identified!
1/1 [==============================] - 0s
[[ 0.99639165  0.00360837]]
1/1 [==============================] - 0s
KK identified! …
Run Code Online (Sandbox Code Playgroud)

python convolution deep-learning keras

10
推荐指数
2
解决办法
407
查看次数

使用卷积在连续的声音流中查找参考音频样本

我之前关于在更大的音频样本中找到参考音频样本的问题中,有人建议我应该使用卷积.
使用DSPUtil,我能够做到这一点.我玩了一下,尝试了不同的音频样本组合,看看结果是什么.为了可视化数据,我只是将原始音频作为数字转储到Excel并使用这些数字创建了一个图表.一个高峰可见的,但我真的不知道这对我有什么帮助.我有这些问题:

  • 我不知道,如何从峰值位置推断原始音频样本中匹配的起始位置.
  • 我不知道,我应该如何应用连续的音频流,所以一旦参考音频样本出现,我就能做出反应.
  • 我不明白,为什么图片2和图片4(见下文)差别如此之大,尽管两者都代表了与自身卷积的音频样本......

任何帮助都非常感谢.

以下图片是使用Excel进行分析的结果:

  1. 一个较长的音频样本,附近有参考音频(哔哔声):http: //img801.imageshack.us/img801/976/values1.png
  2. 哔哔声与自己融为一体:http: //img96.imageshack.us/img96/6720/values2i.png
  3. 没有哔哔声的较长音频样本与哔哔声缠绕在一起:http: //img845.imageshack.us/img845/1091/values3.png
  4. 第3点的较长音频样本与其自身融合:http: //img38.imageshack.us/img38/1272/values4.png

更新和解决方案:
感谢Han的广泛帮助,我实现了目标.
在我没有FFT的情况下推出自己的慢速实现后,我发现alglib提供了快速实现.我的问题有一个基本假设:其中一个音频样本完全包含在另一个中.
因此,以下代码返回两个音频样本中较大者中的样本中的偏移量以及该偏移量处的归一化互相关值.1表示完全相关,0表示根本没有相关,-1表示完全负相关:

private void CalcCrossCorrelation(IEnumerable<double> data1, 
                                  IEnumerable<double> data2, 
                                  out int offset, 
                                  out double maximumNormalizedCrossCorrelation)
{
    var data1Array = data1.ToArray();
    var data2Array = data2.ToArray();
    double[] result;
    alglib.corrr1d(data1Array, data1Array.Length, 
                   data2Array, data2Array.Length, out result);

    var max = double.MinValue;
    var index = 0;
    var i = 0;
    // Find the maximum …
Run Code Online (Sandbox Code Playgroud)

.net c# signal-processing convolution cross-correlation

9
推荐指数
1
解决办法
4389
查看次数

计算卷积的最快方法

谁知道计算卷积的最快方法?不幸的是,我处理的矩阵非常大(500x500x200),如果我convn在MATLAB中使用它需要很长时间(我必须在嵌套循环中迭代这个计算).所以,我使用FFT进行卷积,现在速度更快.但是,我仍然在寻找一种更快的方法.任何的想法?

c++ matlab signal-processing convolution template-matching

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

TensorFlow ConvNet中完全连接的层重量尺寸

我一直在使用TensorFlow中卷积网的这个例子进行编码,我对这种权重分配感到困惑:

weights = {

# 5x5 conv, 1 input, 32 outputs
'wc1': tf.Variable(tf.random_normal([5, 5, 1, 32])),

# 5x5 conv, 32 inputs, 64 outputs
'wc2': tf.Variable(tf.random_normal([5, 5, 32, 64])), 

# fully connected, 7*7*64 inputs, 1024 outputs
'wd1': tf.Variable(tf.random_normal([7*7*64, 1024])), 

# 1024 inputs, 10 outputs (class prediction)
'out': tf.Variable(tf.random_normal([1024, n_classes])) 

}
Run Code Online (Sandbox Code Playgroud)

我们怎么知道'wd1'权重矩阵应该有7 x 7 x 64行?

它后来用于重塑第二个卷积层的输出:

# Fully connected layer
# Reshape conv2 output to fit dense layer input
dense1 = tf.reshape(conv2, [-1, _weights['wd1'].get_shape().as_list()[0]]) 

# Relu activation
dense1 = …
Run Code Online (Sandbox Code Playgroud)

convolution conv-neural-network tensorflow

9
推荐指数
1
解决办法
9473
查看次数

Tensorflow的非对称填充假设

为什么选择Tensorflow更喜欢右下角的填充?使用'SAME'填充,对我来说,在第一个真实像素处启动内核的中心锚点会合乎逻辑.由于使用了不对称填充,这导致与其他一些框架的差异.我确实理解非对称填充原则上是好的,否则将留下未使用的填充行/列.

如果Tensorflow会优先考虑左侧和顶部的填充,那么它将进行卷积和权重与Caffe/cudnn/$ frameworks相同,并且无论填充如何,权重转换都是兼容的.

TF给出了底部和右边填充优先级

码:

import numpy as np
import tensorflow as tf
import torch
import torch.nn as nn

tf.enable_eager_execution()

def conv1d_tf(data, kernel_weights, stride):
    filters = np.reshape(kernel_weights, [len(kernel_weights), 1, 1])
    out = tf.nn.conv1d(
        value=data,
        filters=filters,
        stride=stride,
        padding='SAME',
        data_format='NCW',
        )
    return out


def conv1d_pytorch(data, kernel_weights, stride):
    filters = np.reshape(kernel_weights, [1, 1, len(kernel_weights)])
    kernel_size = len(kernel_weights)
    size = data.shape[-1]
    def same_padding(size, kernel_size, stride, dilation):
        padding = ((size - 1) * (stride - 1) + dilation * (kernel_size - 1)) //2
        return padding
    padding …
Run Code Online (Sandbox Code Playgroud)

padding convolution caffe tensorflow

9
推荐指数
1
解决办法
2118
查看次数

如何在Azure机器学习中构建卷积神经网络?

有人应该添加"net#"作为标签.我正在尝试通过使用本教程将其转换为卷积神经网络来改进Azure机器学习工作室中的神经网络:

https://gallery.cortanaintelligence.com/Experiment/Neural-Network-Convolution-and-pooling-deep-net-2

我和教程之间的差异是我正在使用35个功能和1个标签进行回归,他们正在使用28x28功能和10个标签进行分类.

我从基本和第二个例子开始,让他们使用:

input Data [35];

hidden H1 [100]
    from Data all;

hidden H2 [100]
    from H1 all;

output Result [1] linear
    from H2 all;
Run Code Online (Sandbox Code Playgroud)

现在转变为卷积我误解了.在这里的教程和文档中:https://docs.microsoft.com/en-us/azure/machine-learning/machine-learning-azure-ml-netsharp-reference-guide它没有提到节点元组值的方式计算隐藏层.教程说:

hidden C1 [5, 12, 12]
  from Picture convolve {
    InputShape  = [28, 28];
    KernelShape = [ 5,  5];
    Stride      = [ 2,  2];
    MapCount = 5;
  }

hidden C2 [50, 4, 4]
   from C1 convolve {
     InputShape  = [ 5, 12, 12];
     KernelShape = [ 1,  5,  5];
     Stride …
Run Code Online (Sandbox Code Playgroud)

machine-learning convolution azure-machine-learning-studio net#

9
推荐指数
1
解决办法
1006
查看次数

kernel_constraint = max_norm(3)做什么?

在我正在研究的一个教程中(下面给出的链接),作者将基线神经网络结构概述为:

卷积输入层,32个大小为3×3的特征映射,整流器激活函数和最大范数的权重约束设置为3.

model.add(Conv2D(32, (3, 3), input_shape=(3, 32, 32), padding='same', activation='relu', kernel_constraint=maxnorm(3)))
Run Code Online (Sandbox Code Playgroud)

最大范数的权重约束对Conv层意味着什么?(我们正在使用Keras.)

https://machinelearningmastery.com/object-recognition-convolutional-neural-networks-keras-deep-learning-library/

谢谢!

optimization convolution computer-vision conv-neural-network keras

9
推荐指数
1
解决办法
6779
查看次数

了解 Keras Conv2D 层中的参数数量

我的第一层是:

model.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, padding="same", activation="relu", input_shape=[32, 32, 3]))
Run Code Online (Sandbox Code Playgroud)

以及Model汇总表中的参数个数:

    Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_4 (Conv2D)            (None, 32, 32, 32)        896  
Run Code Online (Sandbox Code Playgroud)

根据我的理解,参数的数量必须是:

(No of filters) X (Number of parameters in Kernel)
Run Code Online (Sandbox Code Playgroud)

即在我的情况下==> 32 X (3 X 3) = 288

但它的896。它是怎么来的896?

谢谢

convolution conv-neural-network keras

9
推荐指数
1
解决办法
2435
查看次数

Numpy 沿轴卷积 2 个二维数组

我有 2 个二维数组。我试图沿轴 1 进行卷积。np.convolve没有提供axis参数。这里的答案是,使用 1 个 2D 数组与 1D 数组进行卷积np.apply_along_axis。但它不能直接应用于我的用例。这里的问题没有答案。

MWE如下。

import numpy as np

a = np.random.randint(0, 5, (2, 5))
"""
a=
array([[4, 2, 0, 4, 3],
       [2, 2, 2, 3, 1]])
"""
b = np.random.randint(0, 5, (2, 2))
"""
b=
array([[4, 3],
       [4, 0]])
"""

# What I want
c = np.convolve(a, b, axis=1)  # axis is not supported as an argument
"""
c=
array([[16, 20,  6, …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy convolution

9
推荐指数
1
解决办法
2534
查看次数

在keras中定义模型(include_top = True)

有人可以告诉我什么include_top = True意味着在keras中定义模型?

我在Keras文档中读到了这一行的含义.它说include_top:是否在网络顶部包含完全连接的层.

我仍然在寻找这行代码的直观解释.

ResNet50(include_top=True)
Run Code Online (Sandbox Code Playgroud)

谢谢!

python convolution neural-network keras

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