import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers # 创建模型 model = keras.Sequential([ layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)), layers.MaxPooling2D((2, 2)), layers.Conv2D(64, (3, 3), activation='relu'), layers.MaxPooling2D((2, 2)), layers.Conv2D(64, (3, 3), activation='relu'), layers.Flatten(), layers.Dense(64, activation='relu'), layers.Dense(6, activation='softmax') ]) # 编译模型 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # 加载数据集 train_dataset = keras.preprocessing.image_dataset_from_directory( 'path/to/training/folder', validation_split=0.2, subset='training', seed=123, image_size=(224, 224), batch_size=32) validation_dataset = keras.preprocessing.image_dataset_from_directory( 'path/to/training/folder', validation_split=0.2, subset='validation', seed=123, image_size=(224, 224), batch_size=32) # 训练模型 model.fit(train_dataset, epochs=10, validation_data=validation_dataset) # 保存模型 model.save('path/to/save/model')详细解析代码
时间: 2023-11-14 15:06:34 浏览: 81
这段代码使用了 TensorFlow 和 Keras 库来创建、编译、训练和保存一个基本的卷积神经网络模型。以下是代码的详细解析:
1. 导入库
```python
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
```
这里导入了 TensorFlow 和 Keras 库以及其中的一些模块和类。
2. 创建模型
```python
model = keras.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(6, activation='softmax')
])
```
这段代码创建了一个序列模型,它由一系列层组成。首先是一个卷积层,它包含 32 个过滤器(即输出通道数),每个过滤器大小为 3x3,激活函数为 ReLU。这层的输入形状为 (224, 224, 3),即图像大小为 224x224,通道数为 3。接着是一个最大池化层,它的池化窗口大小为 2x2。然后再次添加一个卷积层,它包含 64 个过滤器,大小为 3x3,ReLU 激活函数。接着是另一个最大池化层。最后添加一个具有 64 个神经元和 ReLU 激活函数的密集层,以及一个具有 6 个神经元和 softmax 激活函数的输出层。
3. 编译模型
```python
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
```
这段代码编译了模型,指定了优化器、损失函数和评估指标。这里使用 Adam 优化器,交叉熵损失函数和准确率评估指标。
4. 加载数据集
```python
train_dataset = keras.preprocessing.image_dataset_from_directory(
'path/to/training/folder',
validation_split=0.2,
subset='training',
seed=123,
image_size=(224, 224),
batch_size=32)
validation_dataset = keras.preprocessing.image_dataset_from_directory(
'path/to/training/folder',
validation_split=0.2,
subset='validation',
seed=123,
image_size=(224, 224),
batch_size=32)
```
这段代码使用 Keras 提供的 `image_dataset_from_directory` 函数从文件夹中加载训练和验证数据集。这里指定了数据集所在文件夹的路径、验证集占总数据集的比例、随机种子、图像大小和批量大小等参数。
5. 训练模型
```python
model.fit(train_dataset, epochs=10, validation_data=validation_dataset)
```
这段代码使用 `fit` 函数对模型进行训练,指定了训练数据集、训练轮数和验证数据集等参数。
6. 保存模型
```python
model.save('path/to/save/model')
```
这段代码使用 `save` 函数将训练好的模型保存到指定路径。