无法建立混乱矩阵

时间:2019-03-13 11:01:08

标签: python keras confusion-matrix

我想为我的CNN模型建立一个混淆矩阵,其中包含代码:

<div class="container">
  <table class="dashboard">
    <tr>
      <th>header 1</th>
      <th>header 2</th>
      <th>header 3</th>
      <th>header 4</th>
    </tr>
    <tr>
      <td>item 1</td>
      <td>item 2</td>
      <td>item 3</td>
      <td>item 4</td>
    </tr>
    <tr>
      <td>item 1</td>
      <td>item 2</td>
      <td>item 3</td>
      <td>item 4</td>
    </tr>
    <tr>
      <td>item 1</td>
      <td>item 2</td>
      <td>item 3</td>
      <td>item 4</td>
    </tr>
    <tr>
      <td>item 1</td>
      <td>item 2</td>
      <td>item 3</td>
      <td>item 4</td>
    </tr>
  </table>
</div>

混乱矩阵:

classifier = Sequential()


classifier.add(Conv2D(32, (3, 3), input_shape=(64,64, 3), 
activation='relu'))


classifier.add(MaxPooling2D(pool_size=(2, 2)))  

classifier.add(Flatten())
classifier.add(Dense(units=1, activation='sigmoid'))



classifier.compile(optimizer='adam', loss='binary_crossentropy', metrics= 
['accuracy'])


batch_size = 32

train_datagen = ImageDataGenerator(rescale=1. / 255,
                               shear_range=0.2,
                               zoom_range=0.2,
                               horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1. / 255)

training_set = train_datagen.flow_from_directory('x1' ,
                                             target_size=(64,64),
                                             batch_size=64,
                                             class_mode='binary')

test_set = test_datagen.flow_from_directory('x2' ,
                                        target_size=(64,64),
                                        batch_size=64,
                                        class_mode='binary')



ep=50

H=classifier.fit_generator(training_set,
                     steps_per_epoch=1204/batch_size,
                     epochs=ep,
                     validation_data=test_set,
                     validation_steps=408/batch_size,
                                     )

validation_steps=408

我收到此错误:

  

ValueError:找到样本数量不一致的输入变量:       [408,792]

我该怎么办?

2 个答案:

答案 0 :(得分:1)

test_sety_pred的观察次数不同。您传递给predict_generator的步骤数可能不正确。

不确定使用的是哪个版本的Keras,但请尝试Y_pred =classifier.predict_generator(test_set)。在较新的版本中,省略步骤数将对所有图像返回预测。

答案 1 :(得分:0)

您有

batch_size = 32

但在test_set内,

batch_size=64

因此,当您使用predict_generator个步骤运行validation_steps//batch_size+1时,将使用32个步骤来创建步骤,而使用生成器则要使用64个步骤。

您必须同时将其设置为32或64