深度可分离卷积 二分类 训练自己的图像数据集 代码
时间: 2023-09-12 18:13:22 浏览: 71
深度学习图像分类数据集
以下是一个使用深度可分离卷积进行二分类任务的示例代码,其中使用了Keras库和自己的图像数据集:
```python
from keras.models import Sequential
from keras.layers import SeparableConv2D, MaxPooling2D, Flatten, Dense
from keras.preprocessing.image import ImageDataGenerator
# 创建模型
model = Sequential()
# 添加深度可分离卷积层和最大池化层
model.add(SeparableConv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)))
model.add(MaxPooling2D((2, 2)))
model.add(SeparableConv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(SeparableConv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(SeparableConv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
# 添加扁平层和全连接层
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# 编译模型
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
# 数据增强
train_datagen = ImageDataGenerator(rescale=1./255, rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
# 加载训练集和测试集
train_generator = train_datagen.flow_from_directory(train_dir, target_size=(150, 150), batch_size=20, class_mode='binary')
validation_generator = test_datagen.flow_from_directory(validation_dir, target_size=(150, 150), batch_size=20, class_mode='binary')
# 训练模型
history = model.fit_generator(train_generator, steps_per_epoch=100, epochs=30, validation_data=validation_generator, validation_steps=50)
# 保存模型
model.save('my_model.h5')
```
在这个示例中,我们使用了四个深度可分离卷积层和四个最大池化层,然后是一个扁平层和两个全连接层。我们还使用了数据增强技术来扩充我们的数据集。
我们训练了30个epochs,然后保存了我们的模型。你可以根据你自己的数据集和任务进行调整。
阅读全文