利用卷积神经网络写出基于深度学习的好坏香蕉识别的代码
时间: 2023-08-04 11:09:32 浏览: 34
好的,以下是一个基于深度学习的好坏香蕉识别的卷积神经网络的代码示例:
```python
import tensorflow as tf
from tensorflow.keras import layers
# 定义模型
model = tf.keras.Sequential()
# 添加卷积层和池化层
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
# 添加全连接层
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
# 编译模型
model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.RMSprop(lr=1e-4), metrics=['accuracy'])
# 加载数据集
train_dir = './train'
val_dir = './validation'
test_dir = './test'
train_generator = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255)
val_generator = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255)
test_generator = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255)
train_data = train_generator.flow_from_directory(train_dir, target_size=(150, 150), batch_size=20, class_mode='binary')
val_data = val_generator.flow_from_directory(val_dir, target_size=(150, 150), batch_size=20, class_mode='binary')
test_data = test_generator.flow_from_directory(test_dir, target_size=(150, 150), batch_size=20, class_mode='binary')
# 训练模型
history = model.fit(train_data, steps_per_epoch=100, epochs=30, validation_data=val_data, validation_steps=50)
# 评估模型
test_loss, test_acc = model.evaluate(test_data, steps=50)
print('Test accuracy:', test_acc)
```
这个模型使用了4个卷积层和4个池化层,以及两个全连接层。训练数据集应该包含好坏香蕉的图像,验证数据集和测试数据集也应该包含类似的图像。你可以根据实际情况修改代码中的超参数,例如学习率、批大小和训练周期等。