标签: cnn

ValueError:形状(无,1)和(无,2)不兼容

我正在训练一个面部表情(愤怒 vs 快乐)模型。最后一个密集输出层以前是 1,但是当我预测图像时,它的输出始终为 1,准确度为 64%。所以我将其更改为 2 以获取 2 个输出。但现在我收到这个错误::

Epoch 1/15

---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-54-9c7272c38dcb> in <module>()
     11     epochs=epochs,
     12     validation_data = val_data_gen,
---> 13     validation_steps = validation_steps,
     14 
     15 )

10 frames

/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
    966           except Exception as e:  # pylint:disable=broad-except
    967             if hasattr(e, "ag_error_metadata"):
--> 968               raise e.ag_error_metadata.to_exception(e)
    969             else:
    970               raise

ValueError: in user code:

    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:571 train_function  *
        outputs = self.distribute_strategy.run(
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:951 run  **
        return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2290 call_for_each_replica …
Run Code Online (Sandbox Code Playgroud)

keras tensorflow cnn

24
推荐指数
5
解决办法
7万
查看次数

Pytorch:W ParallelNative.cpp:206

我正在尝试按照此处的教程在我的图像集上使用预先训练的模板:https : //pytorch.org/tutorials/beginner/finetuning_torchvision_models_tutorial.html

只有当我运行我的代码并且控制台锁定时,我总是得到这个“错误”:

[W ParallelNative.cpp:206] Warning: Cannot set number of intraop threads after parallel work has started or after set_num_threads call when using native parallel backend (function set_num_threads)

预先感谢您的帮助,

parallel-processing cpu gpu pytorch cnn

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

为什么与 Matlab 相比,在 python 中运行的 CNN 非常慢?

我在 Matlab 2019b 中训练了一个 CNN,它将图像分为三个类别。当这个 CNN 在 Matlab 中进行测试时,它运行良好,只需要 10-15 秒就可以对图像进行分类。我在 Maltab 中使用了 exportONNXNetwork 函数,以便我可以在 Tensorflow 中实现我的 CNN。这是我用来在 python 中使用 ONNX 文件的代码:

import onnx
from onnx_tf.backend import prepare 
import numpy as np
from PIL import Image 

onnx_model = onnx.load('trainednet.onnx')
tf_rep = prepare(onnx_model)
filepath = 'filepath.png' 

img = Image.open(filepath).resize((224,224)).convert("RGB") 
img = array(img).transpose((2,0,1))
img = np.expand_dims(img, 0) 
img = img.astype(np.uint8) 

probabilities = tf_rep.run(img) 
print(probabilities) 

Run Code Online (Sandbox Code Playgroud)

当尝试使用此代码对同一测试集进行分类时,它似乎对图像进行了正确分类,但速度非常慢,并且在某些点达到高达 95+% 的高内存使用率时会冻结我的计算机。

我还在命令提示符下对它进行分类时注意到它打印:

2020-04-18 18:26:39.214286: W tensorflow/core/grappler/optimizers/meta_optimizer.cc:530] constant_folding failed: Deadline exceeded: constant_folding exceeded deadline., time = 486776.938ms. …
Run Code Online (Sandbox Code Playgroud)

python matlab tensorflow onnx cnn

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

在 pytorch 上使用 MC Dropout 测量不确定性

我正在尝试在 Pytorch 上使用 Mc Dropout 实现贝叶斯 CNN,主要思想是通过在测试时应用 dropout 并运行多次前向传递,您可以获得来自各种不同模型的预测。我找到了 Mc Dropout 的应用程序,但我真的不明白他们是如何应用这种方法的,以及他们究竟是如何从预测列表中选择正确的预测的

这是代码


 def mcdropout_test(model):
    model.train()
    test_loss = 0
    correct = 0
    T = 100
    for data, target in test_loader:
        if args.cuda:
            data, target = data.cuda(), target.cuda()
        data, target = Variable(data, volatile=True), Variable(target)
        output_list = []
        for i in xrange(T):
            output_list.append(torch.unsqueeze(model(data), 0))
        output_mean = torch.cat(output_list, 0).mean(0)
        test_loss += F.nll_loss(F.log_softmax(output_mean), target, size_average=False).data[0]  # sum up batch loss
        pred = output_mean.data.max(1, keepdim=True)[1]  # get the index of the max log-probability
        correct += …
Run Code Online (Sandbox Code Playgroud)

bayesian uncertainty pytorch dropout cnn

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

我不明白 conv1d、conv2d 的 pytorch 输入大小

我有 2 个时间序列的数据,每个序列 18 点。所以我组织了一个 18 行 2 列的矩阵(180 个样本分为 2 个类别 - 激活和非激活)。

所以,我想用这些数据做一个 CNN,我的内核沿着线(时间)朝一个方向走。附图示例。

我的数据 18x2

在我的代码中,与具有 3 个通道的 RGB 相比,我不知道我的通道如何。并且不知道层的输入大小,以及如何计算才能知道全连接层。

我需要使用 conv1d 吗?conv2d?conv3d ? 基于理解 conv 1D 2D 3D,我有 2D 输入,我想做 1D 卷积(因为我在一个方向上移动我的内核),这是正确的吗?

例如,我如何传递内核大小(3,2)?

我的数据是这种形式,使用 DataLoader 和 batch_size= 4 后:

print(data.shape, label.shape)
Run Code Online (Sandbox Code Playgroud)

火炬大小([4, 2, 18]) 火炬大小([4, 1])

我的卷积模型是:

OBS:我只是放了任意数量的输入/输出大小。

# Creating our CNN Model -> 1D convolutional with 2D input (HbO, HbR)

class ConvModel(nn.Module):
    def __init__(self):
        super(ConvModel, self).__init__()
        self.conv1 = nn.Conv1d(in_channels=1,  out_channels= 18, kernel_size=3, stride …
Run Code Online (Sandbox Code Playgroud)

python input conv-neural-network pytorch cnn

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

使用 fastai 的 learn.lr_find() 选择 learning_rate

我正在阅读Kaggle 上发布的这个Heroes Recognition ResNet34 notebook。

作者使用fastai的learn.lr_find()方法求最优学习率。

根据学习率绘制损失函数会产生下图:

在此处输入图片说明

似乎损失达到了 1e-1 的最小值,但在下一步中,作者将 1e-2 作为 max_lr 传入fit_one_cycle以训练他的模型:

learn.fit_one_cycle(6,1e-2)

为什么在这个例子中使用 1e-2 而不是 1e-1?这不会只会使训练变慢吗?

pytorch kaggle fast-ai cnn

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

使用 ResNet50,验证准确性和损失不会改变

我正在尝试使用ResNet50Python ( keras)进行图像识别。我试图用 做同样的任务VGG16,我得到了一些这样的结果(对我来说似乎没问题): resultsVGG16。训练和验证的准确率/损失函数每一步都在变好,因此网络必须学习。

然而,随着ResNet50训练函数的投注更好,而验证函数没有改变:resultsResNet

我两次都使用了相同的代码和数据,只是模型发生了变化。

那么ResNet50只在训练数据上学习的原因是什么?

我的 ResNet 模型如下所示:

'''Python

model = Sequential()
base_model = VGG16(weights='imagenet', include_top=False,input_shape= 
(image_size,image_size,3))
for layer in base_model.layers[:-4]:
    layer.trainable=False

model.add(base_model)
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(NUM_CLASSES, activation='softmax'))
Run Code Online (Sandbox Code Playgroud)

VGG 非常相似:

model = Sequential()
base_model = ResNet50(include_top=False, weights='imagenet', input_shape= 
(image_size,image_size,3))
for layer in base_model.layers[:-8]:
     layer.trainable=False

model.add(base_model)
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(NUM_CLASSES, activation='softmax'))
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow resnet cnn

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

ValueError: 没有为任何变量提供梯度:['conv2d/kernel:0', 'conv2d/bias:0', 'conv2d_1/kernel:0', 'conv2d_1/bias:0',

系统信息 Colab tensorflow 2.2.0

描述当前的行为:当我尝试解决我自己的数据问题时遇到了这个错误,即多标签语义分割。

下面是代码

import tensorflow as tf
import tensorflow.keras.backend as K

IMG_WIDTH = 512
IMG_HEIGHT = 512
IMG_CHANNELS = 3

# batch_shape=(512,512,3)
# inputs = Input(batch_shape=(4, 512, 512, 3))
#Build the model
inputs = tf.keras.layers.Input((IMG_HEIGHT, IMG_WIDTH, IMG_CHANNELS))
#s = tf.keras.layers.Lambda(lambda x: x / 255)(inputs)

#Contraction path
c1 = tf.keras.layers.Conv2D(16, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(inputs)
c1 = tf.keras.layers.Dropout(0.1)(c1)
c1 = tf.keras.layers.Conv2D(16, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c1)
p1 = tf.keras.layers.MaxPooling2D((2, 2))(c1)

c2 = tf.keras.layers.Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(p1) …
Run Code Online (Sandbox Code Playgroud)

keras tensorflow cnn

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

类型错误:fit_generator() 得到了一个意外的关键字参数“nb_val_samples”

我试图通过参考这篇文章来制作一个手写分类器:https : //github.com/priya-dwivedi/Deep-Learning/blob/master/handwriting_recognition/English_Writer_Identification.ipynb
在拟合模型时,我收到一条错误消息,指出 fir_generator 不希望有任何此类参数!此外,虽然错误本身是一个意外的参数错误,但标记显示为类型错误,我想知道我的管道是否有问题。
这是模型。(我排除了错误之后的所有代码,因为它不应该以任何方式相关。如果你觉得它很重要,你可以参考上面链接中的代码)
Tensorflow 版本 - 1.14 ,Keras 版本 - 2.2.4

from __future__ import division
import numpy as np
import os
import glob
from PIL import Image  
from random import *  
from tensorflow.keras.utils 
import to_categorical 
from sklearn.preprocessing 
import LabelEncoder
import matplotlib.pyplot as plt
import matplotlib.image as mpimg 
%matplotlib inline

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten, Lambda, ELU, Activation, BatchNormalization
from tensorflow.keras.layers import Convolution2D, Cropping2D, ZeroPadding2D, MaxPooling2D 
from tensorflow.keras.optimizers import …
Run Code Online (Sandbox Code Playgroud)

python machine-learning keras tensorflow cnn

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

TensorFlow fit 给出 TypeError:无法克隆对象错误

我正在使用基本的 CNN 模型对我的数据进行分类。我的输入数据的维度是 (325, 20, 244,244)。我使用的代码如下:

model = Sequential()
model.add(Dense(2, activation='relu', input_shape=X_train.shape[1:]))
model.add(Dense(2, activation='sigmoid'))

optimizer = ['SGD', 'RMSprop', 'Adagrad', 'Adadelta', 'Adam', 'Adamax', 'Nadam']
epochs = [10, 50, 100]
param_grid = dict(epochs=epochs, optimizer=optimizer)

model.compile(loss='binary_crossentropy', metrics=['accuracy'])
grid = GridSearchCV(estimator=model, param_grid=param_grid, scoring='accuracy', n_jobs=-1, refit='boolean')
grid_result = grid.fit(X_train, Y_train, validation_data=(X_test, Y_test))
print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

grid_result = grid.fit(X_train, Y_train, validation_data=(X_test, Y_test))

Traceback (most recent call last):

  File "<ipython-input-16-bb553189f3ee>", line 1, in <module>
    grid_result = grid.fit(X_train, Y_train, validation_data=(X_test, Y_test))

  File "C:\Users\Student\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py", …
Run Code Online (Sandbox Code Playgroud)

python tensorflow2.x cnn

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