我想为我的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]
我该怎么办?
答案 0 :(得分:1)
test_set
和y_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