基于tensorflow花卉识别代码
时间: 2023-09-13 16:12:26 浏览: 144
以下是使用 TensorFlow 实现花卉识别的代码示例:
```python
import tensorflow as tf
import numpy as np
import os
# 定义花卉分类标签
flower_labels = ['daisy', 'dandelion', 'roses', 'sunflowers', 'tulips']
num_classes = len(flower_labels)
# 定义模型超参数
learning_rate = 0.001
batch_size = 64
num_epochs = 50
# 加载花卉数据集
train_data_dir = '/path/to/training/dataset'
test_data_dir = '/path/to/test/dataset'
train_datagen = tf.keras.preprocessing.image.ImageDataGenerator(
rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)
test_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
train_data_dir, target_size=(224, 224), batch_size=batch_size, class_mode='categorical')
test_generator = test_datagen.flow_from_directory(
test_data_dir, target_size=(224, 224), batch_size=batch_size, class_mode='categorical')
# 定义模型结构
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 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.Conv2D(128, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dense(num_classes, activation='softmax')
])
# 编译模型
model.compile(optimizer=tf.keras.optimizers.Adam(lr=learning_rate),
loss='categorical_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(train_generator, epochs=num_epochs, validation_data=test_generator)
# 评估模型
test_loss, test_acc = model.evaluate(test_generator)
print('Test accuracy:', test_acc)
# 保存模型
model.save('flower_classification_model.h5')
```
在上述代码中,我们首先定义了花卉分类标签和模型超参数。然后,使用 TensorFlow 内置的 `ImageDataGenerator` 类加载花卉数据集,并将其分为训练集和测试集。接着,我们定义了卷积神经网络模型的结构,并使用 `compile()` 方法编译模型。最后,使用 `fit()` 方法训练模型,并评估模型的性能。最后,我们将训练好的模型保存到磁盘上。
阅读全文