形状识别CNN:Softmax输出始终为1

问题描述

我正在尝试根据某些属性(例如前卫形式与圆形形式)对几何形状进行分类。 我的网络输出总是 [1,0] 或 [0,1],即使预测错误。有没有办法获得有用的 softmax 输出(例如,如果预测不确定,则为 [0.6,0.4])?理想情况下,我想通过 softmax 输出的值来读出形状属性的“显而易见性”(例如 [1,0] -> “形状非常圆。” vs. [0.6,0.4] -> “形状有点圆。”)。

您可以在下面的代码中找到我的模型的架构。

如果有人能帮助我解决这个问题,我会很高兴,因为这是我的第一个机器学习项目。

最好的问候, 瓦伦丁

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Dropout,Activation,Flatten,Conv2D,MaxPooling2D
import pickle
import numpy as np
import tensorflowjs as tfjs

X = pickle.load(open("Round.pickle","rb"))
Y = pickle.load(open("Round.pickle","rb"))

X = np.array(X/255.0)
Y = np.array(Y)

model = Sequential()
model.add(Conv2D(64,(3,3),input_shape = X.shape[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(1024))
model.add(Activation("relu"))

model.add(Dense(512))
model.add(Activation("relu"))

model.add(Dense(2))
model.add(Activation("softmax"))


optimizer = tf.keras.optimizers.Adam(learning_rate=0.1)

model.compile(loss = "categorical_crossentropy",optimizer = optimizer,metrics = ['accuracy'])

model.fit(X,Y,batch_size = 8,epochs = 5,validation_split = 0.1)

model.save('Round.model')

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)