使用keras框架实现对已经分好训练集、验证集、测试集的数据集进行多分类,其中输入图片为150✖150,分类数量为10,将结果可视化并进行评估,其中要求优化准确率
时间: 2024-02-12 21:08:15 浏览: 16
好的,下面是实现您的需求的代码示例。
首先,导入相关的库和模块:
```python
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D
from tensorflow.keras.optimizers import Adam
import matplotlib.pyplot as plt
```
接着,您需要指定训练、验证和测试数据集的路径,并设置一些参数:
```python
train_dir = 'path/to/training/folder'
val_dir = 'path/to/validation/folder'
test_dir = 'path/to/testing/folder'
batch_size = 32
epochs = 20
img_height, img_width = 150, 150
```
然后,您可以使用 `ImageDataGenerator` 类来加载和预处理您的数据集:
```python
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True
)
val_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='categorical'
)
val_generator = val_datagen.flow_from_directory(
val_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='categorical'
)
test_generator = val_datagen.flow_from_directory(
test_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='categorical'
)
```
在加载和预处理数据集之后,您可以定义您的模型:
```python
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(img_height, img_width, 3)),
MaxPooling2D((2, 2)),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D((2, 2)),
Conv2D(128, (3, 3), activation='relu'),
MaxPooling2D((2, 2)),
Conv2D(128, (3, 3), activation='relu'),
MaxPooling2D((2, 2)),
Flatten(),
Dropout(0.5),
Dense(512, activation='relu'),
Dense(10, activation='softmax')
])
```
在定义模型之后,您需要编译您的模型并指定优化器、损失函数和评估指标:
```python
model.compile(
optimizer=Adam(learning_rate=0.001),
loss='categorical_crossentropy',
metrics=['accuracy']
)
```
然后,您可以训练您的模型并在训练过程中可视化您的结果:
```python
history = model.fit(
train_generator,
steps_per_epoch=train_generator.samples // batch_size,
epochs=epochs,
validation_data=val_generator,
validation_steps=val_generator.samples // batch_size
)
plt.plot(history.history['accuracy'], label='Training Accuracy')
plt.plot(history.history['val_accuracy'], label='Validation Accuracy')
plt.legend()
plt.show()
```
最后,您可以评估您的模型并打印出测试集的准确率:
```python
test_loss, test_acc = model.evaluate(test_generator)
print('Test Accuracy:', test_acc)
```
希望这些代码能够帮助您实现您的需求。