Я пытаюсь обучить модель распознавать изображения, содержащие изображения пожара и VS, содержащие леса.Я тренирую модель на удаленном сервере, используя Linode.Я использую Python 2.7 и Ubuntu 16.04.5.
Когда я запускаю следующий код локально или в блокнотах Jupyter, он создает 2 класса, но когда я хочу запустить его на сервере, он создает 3 класса.
Код, который классифицирует модель:
def onehot(x): return np.array(OneHotEncoder().fit_transform(x.reshape(-1,1)).todense())
model = keras.applications.InceptionV3(weights='imagenet', include_top=False)
batch_size=16
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
train_generator = train_datagen.flow_from_directory(
'datareal/train', # this is the target directory
batch_size=batch_size,
target_size=(224, 224),
class_mode='binary')
test_datagen = ImageDataGenerator(rescale=1./255)
validation_generator = test_datagen.flow_from_directory(
'datareal/valid',
batch_size=batch_size,
target_size=(224, 224),
class_mode='binary')
x = model.output
x = GlobalAveragePooling2D()(x)
# let's add a fully-connected layer
x = Dense(1024, activation='relu')(x)
# and a logistic layer -- let's say we have 2 classes
predictions = Dense(2, activation='softmax')(x)
newmodel = Model(inputs=model.input, outputs=predictions)
newmodel.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])
Вывод:
Found 173 images belonging to 3 classes.
Found 40 images belonging to 3 classes.
Каталог, содержащий все изображения, имеет следующую структуру:
datareal
valid
forest
fire
train
forest
fire
Как заставить модель маркировать только 2 класса вместо 3?