基于卷积神经网络水稻细粒度分类代码
时间: 2023-07-20 20:27:57 浏览: 160
以下是一个基于卷积神经网络的水稻细粒度分类的示例代码:
```python
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt
import numpy as np
# 加载数据集
(X_train, y_train), (X_test, y_test) = datasets.load_data()
# 数据预处理
X_train = X_train.astype('float32') / 255
X_test = X_test.astype('float32') / 255
# 构建卷积神经网络模型
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 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(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10))
# 编译模型
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
# 训练模型
history = model.fit(X_train, y_train, epochs=10, validation_data=(X_test, y_test))
# 可视化训练过程
plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label = 'val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0.5, 1])
plt.legend(loc='lower right')
# 在测试集上进行评估
test_loss, test_acc = model.evaluate(X_test, y_test, verbose=2)
# 进行预测
predictions = model.predict(X_test)
# 显示预测结果
for i in range(10):
plt.imshow(X_test[i], cmap=plt.cm.binary)
plt.xlabel(f"Actual: {y_test[i]}")
plt.title(f"Predicted: {np.argmax(predictions[i])}")
plt.show()
```
在上面的示例代码中,我们首先使用`datasets.load_data()`函数加载了水稻细粒度图像数据集并进行了数据预处理。接着,我们构建了一个卷积神经网络模型,并使用`compile()`函数编译了模型。然后,我们使用`fit()`函数进行模型训练,并使用`plot()`函数可视化了训练过程。在模型训练完成后,我们使用`evaluate()`函数在测试集上进行了评估,并使用`predict()`函数进行了预测。最后,我们使用`imshow()`函数显示了一批测试图像的分类结果。
阅读全文