2016-06-23 33 views
9

Tôi đang sử dụng flow_from_directory để có được đào tạo thiết lập từ một thư mục với cấu trúc sau:Làm thế nào để có được các nhãn id trong Keras khi đào tạo trên nhiều lớp học?

train 
    class1 
    class2 
    class3 
    ... 

Máy phát điện được gọi là nó sau:

train_generator = train_datagen.flow_from_directory( 
     train_data_dir,        
     target_size=(img_height, img_width),   
     batch_size=32,        
     class_mode='categorical') 

Tôi không thiết lập các tham số classes, nhưng tôi đã mong đợi để có được các nhãn theo thứ tự bảng chữ cái.

classes: optional list of class subdirectories (e.g. ['dogs', 'cats']). Default: None. If not provided, the list of classes will be automatically inferred (and the order of the classes, which will map to the label indices, will be alphanumeric).

Tuy nhiên, khi tôi phân loại hình ảnh đào tạo (để kiểm tra nhãn nào được trả lại), tôi không nhận được bất kỳ thứ tự cụ thể nào. Việc đào tạo diễn ra tốt (độ chính xác của ~ 85%), và có một sự nhất quán với các nhãn đầu ra khi phân loại các hình ảnh từ cùng một lớp.

Tôi làm cách nào để suy ra số nhãn được tạo bởi flow_from_directory và ánh xạ chúng tới các lớp?

+0

Vấn đề này đã được cố định bởi [này kéo theo yêu cầu] (https://github.com/fchollet/keras/pull/3052). –

Trả lời

13

Bạn có thể thấy lớp tương ứng với đó Integer nhìn vào biến ImageDataGenerator.class_indices

Dưới đây là một ví dụ về cách sử dụng nó

def build(source=None): 
     datagen = ImageDataGenerator(rescale=1./255) 
     data_generator = datagen.flow_from_directory(
     source, # this is the target directory 
     target_size=(150, 150), # all images will be resized to 150x150 
     batch_size=11, 
     class_mode='sparse') 
     class_dictionary = data_generator.class_indices 
    return data_generator, class_dictionary 
+0

Tuyệt vời! Cảm ơn!! –

+0

Tôi nhận được lỗi: 'ImageDataGenerator' đối tượng không có thuộc tính 'class_indices' –

+0

nó có thể đi mà không nói, nhưng nếu bạn không muốn class_dictionary trong trường hợp này được trả về tự động khi chạy 'build()' chức năng, bạn có thể do: 'global class_dictionary', sau đó' class_dictionary = data_generator.class_indices' cho phép bạn truy cập class_dictionary trên toàn cầu. –

Các vấn đề liên quan