理解神经网络模型的预测。

问题描述 投票:0回答:1

基本上,我有一组图片。基于给定的标签,比如说'狗'和'狗以外的任何东西',我训练了一个卷积神经网络模型。我将'狗'编码为 1 和所有其他标签 0. 然而,当我做 model.predict(image),我的输出看起来像[[0.07502381]]. 虽然我明白我应该得到softmax值和概率,但我不知道如何解释这个显示在嵌套数组中的值。我的代码的大致结构如下。

  1. 准备训练图片 [使用cv2.imread读取图片为灰度,cv2.resize调整图片数组大小]
  2. 创建训练数组,其中每个元素看起来像这样。[[image_array], label],[[image_array], label],...
  3. 调整每个图像数组的大小,就像这样- np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1) 每一个对应的标签(0和1)都保存在Y中。
  4. 我把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)

  5. 然后我以同样的方式准备测试图像--将它们读取为GrayScale,除以255.0,并将它们调整到正确的尺寸--按照这个顺序。

  6. 然后我简单地对每张测试图像使用model.predict。

代码太长了,但这是总体框架。

输出的结果都是我上面描述的那样-- [[0.0028034213]][[0.11553983]]. 没有大于0.5的值,所以我甚至不能设置一个阈值,如果预测值高于0.5就输出1(Dog),否则就输出0。我不知道是不是我的代码出错了,但是我无法解释这些预测值。这是我第一次构建神经网。希望得到一些指导

tensorflow deep-learning neural-network computer-vision conv-neural-network
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.