基于 CNN,搭建一个苹果分类器(二分类)
时间: 2024-01-09 07:04:45 浏览: 127
好的,我可以帮你搭建一个基于CNN的苹果分类器。首先,我们需要准备数据集。可以从网上下载苹果图片,分成两类:好苹果和坏苹果。然后,我们将数据集分成训练集和测试集。训练集用来训练模型,测试集用来测试模型的性能。
接下来,我们可以开始搭建我们的CNN模型。这里我给出一个简单的CNN模型:
```python
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Conv2D(128, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
```
这个模型包含了三个卷积层和三个最大池化层。我们使用relu激活函数和sigmoid输出层来实现二分类。这个模型的输入是150x150的RGB图片。
接下来,我们需要编译模型,并且训练它。这里我给出一个简单的训练代码:
```python
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
history = model.fit(train_generator,
steps_per_epoch=len(train_generator),
epochs=10,
validation_data=val_generator,
validation_steps=len(val_generator))
```
这个代码使用adam优化器和二元交叉熵损失函数来编译模型。我们将训练数据集分成小批量,每个批量包含32张图片。训练模型共进行10个epoch。同时,我们使用测试数据集来验证模型的性能。
最后,我们可以使用训练好的模型来预测新的苹果图片。下面是一个简单的预测代码:
```python
import numpy as np
from keras.preprocessing import image
# load image
img = image.load_img('apple.jpg', target_size=(150, 150))
img = image.img_to_array(img)
img = np.expand_dims(img, axis=0)
# predict
result = model.predict(img)
if result[0] > 0.5:
print('good apple')
else:
print('bad apple')
```
这个代码使用Keras的image模块来加载新的苹果图片,并将其转换为模型输入的格式。然后,我们使用训练好的模型来进行预测,并输出结果。
阅读全文