model.predict()函数对于二进制图像分类模型始终返回1

时间:2020-06-28 22:21:20

标签: python tensorflow keras deep-learning google-colaboratory

我正在使用Google colab中的转移学习来研究二进制图像分类深度学习模型。

!wget https://storage.googleapis.com/mledu-datasets/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5 -O /tmp/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5
local_weights_file = '/tmp/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5'
pre_trained_model = InceptionV3(input_shape = (300, 300, 3), 
                                include_top = False, 
                                weights = None)
pre_trained_model.load_weights(local_weights_file)
for layer in pre_trained_model.layers:
    layer.trainable = False
last_layer = pre_trained_model.get_layer('mixed7')
last_output = last_layer.output
x = layers.Flatten()(last_output)
x = layers.Dense(512, activation='relu')(x)
x = layers.Dropout(0.2)(x)
x = layers.Dense(1, activation='sigmoid')(x)
model = Model(pre_trained_model.input, x)
from tensorflow.keras.optimizers import RMSprop
model.compile(optimizer=RMSprop(lr=0.0001),
              loss='binary_crossentropy',
              metrics=['accuracy'])
from tensorflow.keras.preprocessing.image import ImageDataGenerator
      train_datagen = ImageDataGenerator(
      rescale=1/255,
      rotation_range=40,
      width_shift_range=0.2,
      height_shift_range=0.2,
      shear_range=0.2,
      zoom_range=0.2,
      horizontal_flip=True,
      fill_mode="nearest")
validation_datagen = ImageDataGenerator(rescale=1/255)
train_generator = train_datagen.flow_from_directory(
      train_dir,  
      target_size=(300, 300),  
      batch_size=100,
      class_mode='binary')
validation_generator = validation_datagen.flow_from_directory(
      validation_dir,  
      target_size=(300, 300),  
      batch_size=100,
      class_mode='binary')
history = model.fit(
      train_generator,
      steps_per_epoch=20,
      epochs=30,
      verbose=1,
      validation_data=validation_generator,
      validation_steps=10,
      callbacks=[callbacks])

 import numpy as np
 from google.colab import files
 from tensorflow.keras.preprocessing import image

 uploaded=files.upload()
 for fn in uploaded.keys():
   path='/content/' + fn
   img=image.load_img(path, target_size=(300, 300))
   x=image.img_to_array(img)
   x=np.expand_dims(x, axis=0)
   images = np.vstack([x])
   classes = model.predict(images, batch_size=10)
   print(classes)

即使在训练模型并在训练和验证数据上获得相当好的准确性之后,该模型对于任何新图像始终会预测1。我曾尝试更改批次大小,时期,学习率等。但是,没有运气。

有人可以在这里解释什么问题吗?

0 个答案:

没有答案
相关问题