小编Hit*_*esh的帖子

使用model.fit_generator时如何获得混淆矩阵

我正在使用model.fit_generator来训练并获得我的二进制(两个类)模型的结果,因为我直接从我的文件夹中提供输入图像.如何在这种情况下得到混淆矩阵(TP,TN,FP,FN),因为我通常使用confusion_matrix命令sklearn.metrics来获取它,这需要predictedactual标签.但在这里我没有两者.可能是我可以从predict=model.predict_generator(validation_generator)命令计算预测标签.但我不知道我的模型是如何从我的图像中获取输入标签的.我的输入文件夹的一般结构是:

train/
 class1/
     img1.jpg
     img2.jpg
     ........
 class2/
     IMG1.jpg
     IMG2.jpg
test/
 class1/
     img1.jpg
     img2.jpg
     ........
 class2/
     IMG1.jpg
     IMG2.jpg
     ........
Run Code Online (Sandbox Code Playgroud)

我的代码的一些块是:

train_generator = train_datagen.flow_from_directory('train',  
        target_size=(50, 50),  batch_size=batch_size,
        class_mode='binary',color_mode='grayscale')  


validation_generator = test_datagen.flow_from_directory('test',
        target_size=(50, 50),batch_size=batch_size,
        class_mode='binary',color_mode='grayscale')

model.fit_generator(
        train_generator,steps_per_epoch=250 ,epochs=40,
        validation_data=validation_generator,
        validation_steps=21 )
Run Code Online (Sandbox Code Playgroud)

所以上面的代码自动接受两个类输入,但我不知道它认为是哪个类0和哪个类1.

confusion-matrix keras

11
推荐指数
2
解决办法
8204
查看次数

使用model.fit_generator时如何应用K-fold交叉验证

使用model.fit_generator时如何应用K-fold交叉验证.我正在向我的网络提供培训和验证数据.我知道从这里使用sklearn.model_selection.Kfold ,但不知道如何应用于我的模型.我的模型的一些块是:

train_generator = train_datagen.flow_from_directory('train',  
        target_size=(50, 50),  batch_size=batch_size,
        class_mode='binary',color_mode='grayscale')  

validation_generator = test_datagen.flow_from_directory('test',
        target_size=(50, 50),batch_size=batch_size,
        class_mode='binary',color_mode='grayscale')

model.fit_generator(
        train_generator,steps_per_epoch=250 ,epochs=40,
        validation_data=validation_generator,
        validation_steps=21 )
Run Code Online (Sandbox Code Playgroud)

python scikit-learn keras tensorflow

6
推荐指数
0
解决办法
523
查看次数

Keras以外的Keras初始化者

我想使用以下代码在Keras中使用glorot uniform初始化一个4*11矩阵:

import keras
keras.initializers.glorot_uniform((4,11))
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

<keras.initializers.VarianceScaling at 0x7f9666fc48d0>
Run Code Online (Sandbox Code Playgroud)

如何可视化输出?我试过c [1]并得到输出'VarianceScaling' object does not support indexing.

keras keras-layer keras-2

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

如何在keras中使用ImageDataGenerator和flow_from_directory保存调整大小的图像

我正在使用以下代码调整存储在文件夹(两个类)中的RGB图像的大小:

from keras.preprocessing.image import ImageDataGenerator
dataset=ImageDataGenerator()
dataset.flow_from_directory('/home/1',target_size=(50,50),save_to_dir='/home/resized',class_mode='binary',save_prefix='N',save_format='jpeg',batch_size=10)
Run Code Online (Sandbox Code Playgroud)

我的数据树如下所示:

1/
 1_1/
     img1.jpg
     img2.jpg
     ........
 1_2/
     IMG1.jpg
     IMG2.jpg
     ........
resized/
        1_1/ (here i want to save resized images of 1_1)
        2_2/ (here i want to save resized images of 1_2)
Run Code Online (Sandbox Code Playgroud)

运行代码后,我得到以下输出,但没有图像:

Found 271 images belonging to 2 classes.
Out[12]: <keras.preprocessing.image.DirectoryIterator at 0x7f22a3569400>
Run Code Online (Sandbox Code Playgroud)

如何保存图像?

keras keras-2

5
推荐指数
3
解决办法
6760
查看次数

如何在特定时期之后冻结特定层的训练

我想在第三个纪元之后冻结以下代码的前两层的训练。总纪元设置为 10。

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
                 activation='relu',
                 input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
Run Code Online (Sandbox Code Playgroud)

keras tensorflow

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

如何在keras中提供可变大小的图像作为输入

我正在使用带有tensorflow后端的keras编写两个类别的图像分类代码。我的图像存储在计算机的文件夹中,我想将这些图像作为我的keras模型的输入。load_img我只需要一个输入图像,所以我必须使用flow(x,y)flow_from_directory(directory),但是flow(x,y)我们还需要提供标签,这是长度任务,所以我正在使用flow_from_directory(directory)。我的图像大小可变,例如20 * 40、55 * 43 .....,但是这里提到需要固定的target_size。在解决方案中,我们可以使用以下方法将可变大小的图像作为卷积层的输入input_shape=(1, None, None)或input_shape =(None,None,3)(最后一个通道和彩色图像),但fchollet提到它对平坦层没有用,我的模型同时包括卷积层和平坦层。在那篇文章中,只有moi90建议尝试不同的批次,但是每个批次都应具有相同大小的图像,但是由于我的数据非常分散,因此无法对相同尺寸的图像进行分组。所以我决定去batch size=1写下面的代码:

from __future__ import print_function
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D
from keras import backend as K
import numpy as np
from keras.preprocessing.image import ImageDataGenerator

input_shape = (None,None,3)

model = Sequential()
model.add(Conv2D(8, kernel_size=(3, 3),
                 activation='relu',
                 input_shape=input_shape))
model.get_weights()
model.add(Conv2D(16, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(32, activation='relu')) …
Run Code Online (Sandbox Code Playgroud)

machine-learning image-processing neural-network deep-learning keras

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

如何从多类分类的混淆矩阵中提取假阳性,假阴性

我正在使用以下Keras代码对mnist数据进行分类。从confusion_matrix命令sklearn.metrics我得到了混淆矩阵,从TruePositive= sum(numpy.diag(cm1))命令我得到了真正。但是我混淆了如何获得真否定,假肯定,假否定。我从这里阅读解决方案,但用户评论使我感到困惑。请帮助编写代码以获取参数。

from sklearn.metrics import confusion_matrix
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K
import numpy as np
(x_train, y_train), (x_test, y_test) = mnist.load_data()
batch_size = 128
num_classes = 10
epochs = 1
img_rows, img_cols = 28, 28
y_test1=y_test

if K.image_data_format() == 'channels_first':
    x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
    x_test = x_test.reshape(x_test.shape[0], 1, …
Run Code Online (Sandbox Code Playgroud)

python machine-learning confusion-matrix scikit-learn keras

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

matplotlib.image 和 cv2.imread 的区别

当我使用 matplotlib.image 读取灰度图像时,它显示尺寸 (512,512) 和类型 (float32),但是当我对同一图像使用 cv2.imread 时,它显示 (512,512,3) 并键入 uint8。为什么会这样?由于默认标志,cv2.imread 命令是否自动将图像转换为 BGR 格式。(我使用的是 python 3 和 opencv2。)以下是代码:

import cv2
import matplotlib.image as mpimage
img = cv2.imread('image_1.png')
img1=mpimage.imread('image_1.png')
Run Code Online (Sandbox Code Playgroud)

python opencv matplotlib python-3.x

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

如何知道keras中的特定层索引

在我的 keras CNN 模型中,我想知道特定层的层数或索引,例如卷积层的索引。model.summary()将讲述模型的细节并model.layer讲述模型的层次。例如我的模型如下:

model.add(Conv2D(32,(2,2),input_shape=input_shape,activation='linear'))
model.add(BatchNormalization())
model.add(LeakyReLU(alpha=.1))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.1))
model.add(Conv2D(32, (2,2),activation='linear'))
Run Code Online (Sandbox Code Playgroud)

然后在上面的模型 Conv2D 层索引是 0 和 5。这件事我想知道。

keras

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

Keras 自定义优化器_legacy.interfaces

我想在 keras 中制作自定义优化器。为此,我以自定义方式重新实现了 sgd,我的意思是我为此定义了类(用于二进制分类的 MLP),我将优化器命名为“myopt”。以下是代码:

from __future__ import absolute_import
import tensorflow as tf
import six
import copy
from six.moves import zip
from keras.utils.generic_utils import serialize_keras_object
from keras.utils.generic_utils import deserialize_keras_object
from keras.legacy import interfaces
from keras import backend as K
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout
# Generate dummy data
x_train = np.random.random((1000, 20))
y_train = np.random.randint(2, size=(1000, 1))
x_test = np.random.random((100, 20))
y_test = np.random.randint(2, size=(100, 1))

model = Sequential()
model.add(Dense(64, input_dim=20, activation='relu')) …
Run Code Online (Sandbox Code Playgroud)

python keras

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

opencv cascade.detectMultiScale 创建错误:(-215) !empty()

我正在按照教程了解 haar 功能。在编写以下代码时:

import numpy as np
import cv2
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
img = cv2.imread('Sachin.jpeg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
Run Code Online (Sandbox Code Playgroud)

收到以下错误:

File "<ipython-input-6-0b479e459b0f>", line 1, in <module>
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)

    error: /home/travis/miniconda/conda-bld/conda_1486587069159/work/opencv-3.1.0/modules/objdetect/src/cascadedetect.cpp:1639: error: (-215) !empty() in function detectMultiScale
Run Code Online (Sandbox Code Playgroud)

(Sachin 是我从谷歌下载的图像,大小为 (237,237,3),转换灰色后为 (237,237),min=23,max=210。我使用 opencv 3.1.0 和 python 3.6,使用命令conda安装install -c menpo opencv3。我正在尝试这个解决方案,但无法在我的桌面上找到 xml 文件。如何解决问题。

python opencv opencv3.0 opencv3.1

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

在 keras 中运行分类代码时出错

当我从以下链接运行代码时:

https://gist.github.com/fchollet/f35fbc80e066a49d65f1688a7e99f069#file-classifier_from_little_data_script_2-py

我收到以下错误:

使用 TensorFlow 后端。找到属于 2 个类别的 2000 张图像。/home/nd/anaconda3/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:692: UserWarning: 可能损坏 EXIF 数据。期望读取 80000 字节,但只得到 0。Skipping tag 64640 "Skipping tag %s" % (size, len(data), tag))

我正在使用 Ubuntu。

尝试的解决方案:将第 70 行和第 81 行中的“w”更改为“wb”。

提前谢谢

exif python-imaging-library keras

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