基本上,我有一组图片。基于给定的标签,比如说'狗'和'狗以外的任何东西',我训练了一个卷积神经网络模型。我将'狗'编码为 1 和所有其他标签 0. 然而,当我做 model.predict(image)
,我的输出看起来像[[0.07502381]]
. 虽然我明白我应该得到softmax值和概率,但我不知道如何解释这个显示在嵌套数组中的值。我的代码的大致结构如下。
np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)
每一个对应的标签(0和1)都保存在Y中。我把X除以255.0,然后把它输入到我用Sequential()做的模型中。我只运行了一个纪元,准确率显示为97%左右(这让我很惊讶,也许我过度拟合了?)这就是模型。
模型 = Sequential()
model.add(Conv2D(64, (3,3), input_shape = X1.shape[1:]))model.add(Activation("relu"))model.add(MaxPooling2D(pool_size = (2,2)))
model.add(Conv2D(64, (3,3)))model.add(Activation("relu"))model.add(MaxPooling2D(pool_size = (2,2)))
model.add(Flatten())model.add(Dense(64))
model.add(Dense(1))model.add(Activation("sigmoid"))
model.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
model.fit(X, Y, batch_size = 32, validation_split = 0.1)
然后我以同样的方式准备测试图像--将它们读取为GrayScale,除以255.0,并将它们调整到正确的尺寸--按照这个顺序。
代码太长了,但这是总体框架。
输出的结果都是我上面描述的那样-- [[0.0028034213]]
或 [[0.11553983]]
. 没有大于0.5的值,所以我甚至不能设置一个阈值,如果预测值高于0.5就输出1(Dog),否则就输出0。我不知道是不是我的代码出错了,但是我无法解释这些预测值。这是我第一次构建神经网。希望得到一些指导