【发布时间】:2018-01-03 18:26:08
【问题描述】:
我一直在通过 flyyufelix "https://github.com/flyyufelix/cnn_finetune" 浏览 git 存储库来微调 inception v3 网络我想训练网络来检测疾病,所以我有 2 组图像,一个有疾病,一个没有疾病。 git 说 X_train, Y_train, X_valid, Y_valid = load_data() 他加载了 cifar 数据集,git 要求我们创建自己的 load_data() 函数。作者的代码如下
import cv2
import numpy as np
from keras.datasets import cifar10
from keras import backend as K
from keras.utils import np_utils
nb_train_samples = 3000 # 3000 training samples
nb_valid_samples = 100 # 100 validation samples
num_classes = 10
def load_cifar10_data(img_rows, img_cols):
# Load cifar10 training and validation sets
(X_train, Y_train), (X_valid, Y_valid) = cifar10.load_data()
# Resize trainging images
if K.image_dim_ordering() == 'th':
X_train = np.array([cv2.resize(img.transpose(1,2,0), (img_rows,img_cols)).transpose(2,0,1) for img in X_train[:nb_train_samples,:,:,:]])
X_valid = np.array([cv2.resize(img.transpose(1,2,0), (img_rows,img_cols)).transpose(2,0,1) for img in X_valid[:nb_valid_samples,:,:,:]])
else:
X_train = np.array([cv2.resize(img, (img_rows,img_cols)) for img in X_train[:nb_train_samples,:,:,:]])
X_valid = np.array([cv2.resize(img, (img_rows,img_cols)) for img in X_valid[:nb_valid_samples,:,:,:]])
# Transform targets to keras compatible format
Y_train = np_utils.to_categorical(Y_train[:nb_train_samples], num_classes)
Y_valid = np_utils.to_categorical(Y_valid[:nb_valid_samples],num_classes)
return X_train, Y_train, X_valid, Y_valid
我能知道如何生成一个加载的函数吗 数据 X_train, Y_train, X_valid, Y_valid = load_data() 当我在 pc 中有目录时
【问题讨论】:
-
keras
ImageDataGenerator有flow_from_directory方法应该适用于您的用例:keras.io/preprocessing/image -
我将如何向 Y_train 和 Y_valid 添加标签,我有两个文件夹 @filippo 一个包含疾病图像的文件夹和一个包含无疾病图像的文件夹。我知道我必须进入一种热编码格式,通过这样做 Y = np_utils.to_categorical(labels, num_classes)。但我很困惑你怎么知道前 100 个标签应该有病,而接下来的 200 个没有病等
-
查看其他答案,您应该能够从目录结构中推断出标签