使用 tensorflow hub inception v1 进行迁移学习并不能很好地预测

问题描述

我正在尝试使用 inceptionv1 进行迁移学习,但分类器无法很好地预测一张图像,有什么问题?

    from skimage.transform import resize
    m = tf.keras.Sequential([hub.KerasLayer("https://tfhub.dev/google/imagenet/inception_v1/classification/4")])     # load the tensorflow hub model
    m.build([None,224,3])
    rimg = resize(img,output_shape=(1,3),anti_aliasing=True)   # resize and reshape the image to [1,3] 
    rimg = (rimg-np.min(rimg))/(np.max(rimg)-np.min(rimg)).astype(np.float32)  # normalize the image to a [0,1] range
    logits = m(rimg) # Feed the image into the model to obtain the logits 
    probs  = np.exp(logits)/(np.sum(np.exp(logits))) # convert logits to probabilities

解决方法

您正在应用最小-最大归一化,而应改用每个像素值除以 255。具体来说,最小强度的像素值 (0) 应该映射到 0,而最大值 (255) 应该映射到 1。因此,像 [64,128] 这样的图像应该映射到 [0.25,0.5],而您的归一化而是将其映射到 [0,1]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...