微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 model.predict 为 10 个类返回 1 列输出?

如何解决为什么 model.predict 为 10 个类返回 1 列输出?

我创建了我的模型,当我尝试预测时,model.predict 返回一个值 [0.09601733]] 或类似介于 0 和 1 之间的值。但是我正在使用 10 个类进行对象检测。所以我在等待一些这样的输出:[0.1,0.01,0.001,0.1,0.2,0.05,0.96,0.01]

可能是什么问题?以下是代码的相关部分:

train= pd.read_csv("C:/Users/yazilim1/Desktop/Jupyter/cifar-10/trainLabels.csv")
test= pd.read_csv("C:/Users/yazilim1/Desktop/Jupyter/cifar-10/trainLabels.csv")
for i in range(len(train.index)):
    train.iloc[i,0] = str( train.iloc[i,0])+".png"
#    print(train.iloc[i,0]
# Create a train data generator
train_gen = ImageDataGenerator(rotation_range=45,rescale=1./255,horizontal_flip=True)
#Create test data generator to test at the end (for predictions)
test_datagen = ImageDataGenerator(rescale=1 / 255.0) #Rescale it to 1/255.
#Get the datas by using data generators we just created above
train_data = train_gen.flow_from_dataframe(dataframe= train,directory = ("C:/Users/yazilim1/Desktop/Jupyter/cifar-10/train/Edges"),x_col="id",y_col="label",seed = 42,batch_size = 64,shuffle = True,class_mode="categorical",target_size = (32,32),color_mode="grayscale")
#Create a Verify data with Data Generator
verify_data = train_gen.flow_from_dataframe(dataframe= train,color_mode="grayscale")


#Create Model
model = Sequential()
model.add(Conv2D(32,(3,3),input_shape=(32,32,1) ))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(64,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Flatten())
model.add(Dense(1))
model.add(Activation("sigmoid"))
model.compile(loss='binary_crossentropy',optimizer="adam",metrics =['accuracy'])
#Model fit
STEP_SIZE_TRAIN=train_data.n // train_data.batch_size
STEP_SIZE_VALID= verify_data.n // verify_data.batch_size
model.fit(train_data,steps_per_epoch=STEP_SIZE_TRAIN,validation_data=verify_data,validation_steps=STEP_SIZE_VALID,epochs=2,verbose=1
                   )
score = model.evaluate_generator(valid_generator)
print('Test loss:',score[0])
print('Test accuracy:',score[1])


IMG_SIZE=32
test_images=[]

test_images_folder=[img for img in glob.glob("C:/Users/yazilim1/Desktop/Jupyter/cifar-10/train/Test/*")]
#image_folder= natural_sort(test_images_folder)
for test_image in test_images_folder:
    test_image= cv2.imread(test_image,cv2.IMREAD_GRAYSCALE)
    test_image=cv2.resize(test_image,(IMG_SIZE,IMG_SIZE))
    test_image=np.reshape(test_image,[1,1])
    test_image=test_image/255
    test_images.append(test_image)
print("Number of Images added:" + str(len(test_images)))

print(model.predict(test_images[0]))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。