标签: conv-neural-network

输入通道的数量与 Keras 中过滤器的相应维度不匹配

我使用keras搭建基于Resnet50的模型,代码如下

input_crop = Input(shape=(3, 224, 224))

# extract feature from image crop
resnet = ResNet50(include_top=False, weights='imagenet')
for layer in resnet.layers:  # set resnet as non-trainable
    layer.trainable = False

crop_encoded = resnet(input_crop)  
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了错误

'ValueError: 输入通道数与过滤器的对应维度不匹配,224 != 3'

我该如何解决?

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

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

Tensorflow 官方 MNIST 模型训练准确率高但预测性能低

我是机器学习的新手,我一直在关注 Tensorflow 官方 MNIST 模型(https://github.com/tensorflow/models/tree/master/official/mnist)。在训练模型 3 个时期并获得超过 98% 的准确率结果后,我决定用我自己的一些手写图像来测试数据集,这些图像与 MNIST 数据集中的图像非常接近:

    {'loss': 0.03686057, 'global_step': 2400, 'accuracy': 0.98729998}
Run Code Online (Sandbox Code Playgroud)

手写 1,预测为 2:https : //storage.googleapis.com/imageexamples/example1.png

手写 4,预测为 5:https : //storage.googleapis.com/imageexamples/example4.png

手写 7,正确预测为 7:https : //storage.googleapis.com/imageexamples/example7.png

但是,正如您在下面看到的,预测大多是不正确的。任何人都可以分享一些关于为什么会这样的见解吗?如果您需要任何其他信息,请告诉我。谢谢!

[2 5 7]
Result for output key probabilities:
[[  1.47042423e-01   1.40417784e-01   2.80471593e-01   1.18162427e-02
    1.71029475e-02   1.15245730e-01   9.41787264e-04   1.71402004e-02
    2.61987478e-01   7.83374347e-03]
 [  3.70134876e-05   3.59491096e-03   1.70885725e-03   3.44008535e-01
    1.75098982e-02   6.24581575e-01   1.02930271e-05   3.97418407e-05
    7.59732258e-03   9.11886105e-04]
 [  7.62941269e-03   7.74145573e-02   1.42017215e-01   4.73754480e-03
    3.75231934e-06   7.16139004e-03   4.40478354e-04   7.60131121e-01
    4.09408152e-04   5.51677040e-05]]
Run Code Online (Sandbox Code Playgroud)

这是我用来将 …

python machine-learning mnist conv-neural-network tensorflow

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

Keras 卷积 1D 通道独立,[样本,时间步长,特征],风力涡轮机数据集

我正在研究具有常规矩阵格式的风力涡轮机数据集:[ row:datetime , column:features]

但我想用卷积来捕捉每个特征的进展,就像在 LSTM 中完成的那样。因此,我生成了一个具有以下维度的新数据集:

[datetime, 15 timesteps,128 features] :每个原始日期时间行现在有 15 个寄存器(t-0,t-1,...,t-14)用于每个特征。

我的计划是使用大小为 1x5 的内核和 5 的步长分别对每个特征(通道)的时间步长维度进行卷积。从 128 个特征中获取每个 DateTime(batch)、长度为 5 的 3 个过滤器,输出形状为(无,3,128)。

然后我将最大池化应用于前一个第二维 (3) 结果,以获得“最重要的复杂时间步长”,期望输出大小:(None,1,128)

最后我连接了一个用于二元分类的密集层。

目前的网络架构在 keras 中实现如下:

model.add( Conv1D(padding = 'valid',filters = nfeatures,strides = 5,kernel_size = 5, 
                  activation = 'relu',input_shape = (timesteps,nfeatures)) )
model.add( MaxPooling1D() )
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
Run Code Online (Sandbox Code Playgroud)

问题是当我检查第一层 (conv1d) 的权重时,权重具有以下维度:[5,128,128] 和偏差 [128]。

预期的权重格式是:[5,1,128] 为什么是 5x128x128?,我只需要每个功能/通道的 5 个权重(内核大小)。

谢谢!

convolution deep-learning conv-neural-network keras tensorflow

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

如何在 PyTorch 中执行求和池

如何在 PyTorch 中执行求和池。具体来说,如果我们有输入(N, C, W_in, H_in)并想要(N, C, W_out, H_out)使用特定的输出kernel_sizestride就像nn.Maxpool2d?

conv-neural-network max-pooling pytorch spatial-pooling

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

为什么我们在卷积神经网络的卷积层之后使用激活函数?

我是机器学习的新手,我不了解卷积神经网络的一件事就是为什么我们在卷积层之后执行激活。

activation machine-learning conv-neural-network

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

深度可分离卷积

我是深度学习的新手,最近遇到了深度明智的可分离卷积。它们显着减少了处理数据所需的计算,并且只需要标准卷积步骤计算的 10%。

我很好奇这样做背后的直觉是什么?我们确实通过减少参数数量和减少计算来实现更高的速度,但是在性能上是否存在权衡?

此外,它是仅用于图像等特定用例还是可以应用于所有形式的数据?

machine-learning deep-learning conv-neural-network

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

用于图像的多输入 CNN

我想创建一个网络,它将 n 帧作为一个输入并将其标记为一个分类器。

进入我的目标网络以了解我

我想建立2个网络,

第一:使用 Alexnet、Googlenet 等模型来做到这一点。第二:使用 LSTM 模型来做到这一点。

顺便说一下,n 帧是来自视频帧的连续帧。我想这对于第一个模型并不重要。第二点很重要。

我在图像深度学习领域很新。我正在使用 Keras,但我不知道如何构建这个我必须做的网络。尤其是第一个。Alexnet 架构只需要一个框架作为输入,但我想为输入提供 n 个框架。

这只是我尝试的一个例子。我选择 n=5。为了将 n 帧作为输入,我将 n 帧堆叠为通道。当我告诉你我做了什么时,人们说,“天哪,你在做什么。” 我不明白为什么。(FlowNet 架构不是这样使用的?)我仍然不知道我该怎么做。

img1 = cv2.cvtColor(cv2.imread('frame0'),cv2.COLOR_BGR2GRAY) # 64x64x1
img2 = cv2.cvtColor(cv2.imread('frame1'),cv2.COLOR_BGR2GRAY) # 64x64x1
img3 = cv2.cvtColor(cv2.imread('frame2'),cv2.COLOR_BGR2GRAY) # 64x64x1
img4 = cv2.cvtColor(cv2.imread('frame3'),cv2.COLOR_BGR2GRAY) # 64x64x1
img5 = cv2.cvtColor(cv2.imread('frame4'),cv2.COLOR_BGR2GRAY) # 64x64x1

# this is only a sample for label1. (a sample = 5 sequential frames)
a_sample_for_label1 = np.stack([img1,img2,img3,img4,img5],axis=2) # gives me 64x64x5

img1_ = cv2.cvtColor(cv2.imread('other_frame0'),cv2.COLOR_BGR2GRAY) # 64x64x1
img2_ = cv2.cvtColor(cv2.imread('other_frame1'),cv2.COLOR_BGR2GRAY) # …
Run Code Online (Sandbox Code Playgroud)

python deep-learning conv-neural-network

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

导入错误:无法导入名称“normalize_data_format”

我读过一篇文章here,它非常好理解。鉴于其在GitHub 上的实现。当我尝试使用给定的代码自行训练时,它在此文件的第 117 行给出了一个导入错误, 如下所示。我正在使用谷歌 Colab 环境。对错误进行了一些搜索,我发现以下行与 keras version==2.2.2 兼容。我也安装了但没有解决错误。请帮我克服它。默认情况下,colab 中安装的 keras 版本是 2.2.4

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-47-f8ce7e15cf87> in <module>()
      9 from keras.layers.merge import Add
     10 from keras.utils import conv_utils
---> 11 from keras.utils.conv_utils import normalize_data_format
     12 
     13 from keras.layers.core import Dropout

ImportError: cannot import name 'normalize_data_format'

---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

python-3.x deep-learning conv-neural-network keras keras-layer

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

Google Colab 无法访问云端硬盘内容

即使我将我的 Google Drive(及其中的数据集)定义为 google colab,但是当我运行我的代码时,我给出了这个错误:FileNotFoundError: [Errno 2] No such file or directory: 'content/drive/My Drive/.. ..

我已经在 google colab 中定义了 google drive,我可以通过 google colab 访问它,但是当我运行我的代码时,我给出了这个错误

from keras.models import Sequential
from keras.layers import Convolution2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
model=Sequential()
model.add(Convolution2D(32,3,3,input_shape=(64,64,3),activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Convolution2D(32,3,3,activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(output_dim=128,activation='relu'))
model.add(Dense(output_dim=1,activation='sigmoid'))
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])

from keras.preprocessing.image import ImageDataGenerator
train_datagen=ImageDataGenerator(
    rescale=1./255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True)
test_datagen=ImageDataGenerator(rescale=1./255)

training_set=train_datagen.flow_from_directory(
    directory='content/drive/My Drive/Convolutional_Neural_Networks/dataset/training_set',
    target_size=(64,64),
    batch_size=32,
    class_mode='binary')
test_set=test_datagen.flow_from_directory(
    directory='content/drive/My Drive/Convolutional_Neural_Networks/dataset/test_set',
    target_size=(64,64),
    batch_size=32,
    class_mode='binary')

#train
model.fit_generator(
    training_set,
    samples_per_epoch=8000,
    nb_epoch=2, …
Run Code Online (Sandbox Code Playgroud)

deep-learning conv-neural-network keras google-colaboratory

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

如何在 Python 中将 OpenCV 图像提供给经过训练的 CNN 模型(添加新维度)?

我收到此错误Error when checking input: expected conv2d_11_input to have 4 dimensions, but got array with shape (300, 300, 3) 如何将 RGB 图像传递给 CNN?如何枚举样本以创建 4D 图像?

python opencv numpy conv-neural-network

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