繁体   English   中英

Keras CNN:训练准确性和验证准确性非常高

Keras cnn: training accuracy and validation accuracy are incredibly high

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dropout
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
import numpy as np
import cv2
import os
from imutils import paths
import imutils


def image_to_feature_vector(image, size=(32, 32)):
    # resize the image to a fixed size, then flatten the image into
    # a list of raw pixel intensities
    return np.reshape(cv2.resize(image, size).flatten(), (32, 32, 3))


def extract_color_histogram(image, bins=(8, 8, 8)):
    # extract a 3D color histogram from the HSV color space using
    # the supplied number of `bins` per channel
    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    hist = cv2.calcHist([hsv], [0, 1, 2], None, bins,
                        [0, 180, 0, 256, 0, 256])

    # handle normalizing the histogram if we are using OpenCV 2.4.X
    if imutils.is_cv2():
        hist = cv2.normalize(hist)

    # otherwise, perform "in place" normalization in OpenCV 3
    else:
        cv2.normalize(hist, hist)

    # return the flattened histogram as the feature vector
    return hist.flatten()


DATA_SET_PATH = '../training_images'
# grab the list of images that we'll be describing
print("[INFO] describing images...")
imagePaths = list(paths.list_images(DATA_SET_PATH))

# initialize the raw pixel intensities matrix, the features matrix,
# and labels list
rawImages = []
features = []
labels = []

# loop over the input images
for (i, imagePath) in enumerate(imagePaths):
    # load the image and extract the class label (assuming that our
    # path as the format: /path/to/dataset/{class}.{image_num}.jpg
    image = cv2.imread(imagePath)
    label = imagePath.split(os.path.sep)[-2].split(".")[1]

    # extract raw pixel intensity "features", followed by a color
    # histogram to characterize the color distribution of the pixels
    # in the image
    pixels = image_to_feature_vector(image)
    hist = extract_color_histogram(image)

    # update the raw images, features, and labels matricies,
    # respectively
    rawImages.append(pixels)
    labels.append(label)
    features.append(hist)

    # show an update every 1,000 images
    if i > 0 and i % 1000 == 0:
        print("[INFO] processed {}/{}".format(i, len(imagePaths)))

# show some information on the memory consumed by the raw images
# matrix and features matrix

rawImages = np.array(rawImages)
features = np.array(features)
labels = np.array(labels)
print("[INFO] pixels matrix: {:.2f}MB".format(
    rawImages.nbytes / (1024 * 1000.0)))

encoder = LabelEncoder()
encoder.fit(labels)
labels = to_categorical(encoder.transform(labels))

# partition the data into training and testing splits, using 75%
# of the data for training and the remaining 25% for testing
(trainRI, testRI, trainRL, testRL) = train_test_split(
    rawImages, labels, test_size=0.15, random_state=42)
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same', activation='relu', input_shape=(32, 32, 3)))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

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

model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
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(512, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(257, activation='softmax'))

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1,
                         height_shift_range=0.1, shear_range=0.2, zoom_range=0.2,
                         horizontal_flip=True, fill_mode="nearest")

model.fit_generator(aug.flow(trainRI, trainRL, batch_size=256), epochs=10, validation_data=(testRI, testRL))

model.evaluate(testRI, testRL)

我是cnn和keras的初学者,我正在尝试创建一个cnn以使用keras对257个不同的对象进行分类。 以上是我的代码。 当我运行代码时,培训的准确性和验证性都非常高。

100/102 [===========================>。]-ETA:1秒-损失:0.0265-acc:0.9960 101/102 [=========================>。]-ETA:0秒-亏损:0.0264-acc:0.9960 102/102 [== ============================]-56s 553ms / step-损失:0.0264-acc:0.9960-val_loss:0.0250-val_acc:0.9961

谁能告诉我我的代码有什么问题吗? 谢谢。

问题暂未有回复.您可以查看右边的相关问题.
3 Keras:训练和验证准确率高,但预测不佳

我正在 Keras 中实现双向 LSTM。 在训练过程中,训练准确率和验证准确率均为 0.83,损失为 0.45。 这是我的模型: 我通过scikit-learn StandardScaler标准化了我的数据集。 我有一个自定义损失: 这些是model.compile和model.fi ...

4 验证和训练准确性很高,在第一个时期[Keras]

我正在训练一个具有2个类和53k图像的图像分类器,并使用keras使用1.3k图像对其进行验证。 这是神经网络的结构: 训练准确性在第一个时期从〜50%增加到〜85%,验证准确性为85%。 随后的历时不断提高训练准确性,但是,验证准确性保持在80-90%的范围内。 我很好奇,是 ...

6 CNN模型的准确性对于培训和验证集永远不会很高

我正在KTH数据集上训练CNN模型,以检测6类人类行为。 数据处理 数据集包括599个视频,每个动作有25个不同的人表演的99-100个视频。 我将数据分为300个用于训练的视频, 98个用于验证的视频和200个用于测试集的视频。 我将分辨率降低到50x50像素,因此在 ...

7 即使Keras CNN中的数据相同,验证准确性也与训练准确性有很大不同

我正在尝试使用转移学习来训练图像模型,而我目前正面临一个我不理解的问题。 为了验证我的网络,我将相同的数据用于训练和验证,但是,我得到了截然不同的训练和验证准确性。 谁能帮我调试问题? 但是,当我运行代码时,我得到了 由于我使用相同的数据进行培训和验证,因此我期望在培训和验证 ...

8 训练 CNN 时不断训练和验证准确性

我在软件缺陷数据集上运行 CNN,我已使用 Deep Insight 库将其转换为图像。 在 CNN 上训练图像,在每个 epoch 之后,我都见证了不断的训练和验证准确性。 我没有使用任何正则化技术,如 Dropout、Batch Norm 等。除了持续的训练和测试准确度之外,你们都可以看到与模型 ...

10 部署 CNN:训练和测试准确率高,但预测准确率低

刚开始使用 ML 并创建了我的第一个 CNN 来检测人脸图像的方向。 我在 2 组不同的 1000 张图片 (128x128 RGB) 上获得了高达 96-99% 的训练和测试准确率。 但是,当我自己从测试集中预测图像时,模型很少能正确预测。 我认为在测试与预测期间将数据加载到模型中的方式一定有所不 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM