深度学习算法遥感影像分类python代码
时间: 2023-12-16 21:01:03 浏览: 61
深度学习算法用于遥感影像分类是一种广泛应用的方法,其原理是通过多层神经网络来学习特征并进行分类。以下是一个简单的基于Python的深度学习遥感影像分类代码示例:
1. 导入所需的Python库:
```
import numpy as np
import pandas as pd
import tensorflow as tf
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
```
2. 定义数据预处理函数:
```
def preprocess_data(train_dir, validation_dir, test_dir):
train_datagen = ImageDataGenerator(rescale=1./255)
validation_datagen = ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(128, 128),
batch_size=32,
class_mode='categorical'
)
validation_generator = validation_datagen.flow_from_directory(
validation_dir,
target_size=(128, 128),
batch_size=32,
class_mode='categorical'
)
test_generator = test_datagen.flow_from_directory(
test_dir,
target_size=(128, 128),
batch_size=32,
class_mode='categorical'
)
return train_generator, validation_generator, test_generator
```
3. 定义一个深度学习模型:
```
def create_model():
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(128, 128, 3)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(3, activation='softmax'))
return model
```
4. 编译和训练模型:
```
def train_model(model, train_generator, validation_generator):
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit_generator(
train_generator,
steps_per_epoch=100,
epochs=10,
validation_data=validation_generator,
validation_steps=50
)
```
5. 测试模型:
```
def test_model(model, test_generator):
loss, accuracy = model.evaluate_generator(test_generator, steps=len(test_generator))
print('Test Accuracy:', accuracy)
```
6. 主程序代码:
```
if __name__ == '__main__':
train_dir = './data/train'
validation_dir = './data/validation'
test_dir = './data/test'
train_generator, validation_generator, test_generator = preprocess_data(
train_dir, validation_dir, test_dir)
model = create_model()
train_model(model, train_generator, validation_generator)
test_model(model, test_generator)
```
这是一个简单的深度学习遥感影像分类的Python代码示例,你可以根据自己的需求和数据进行相应的修改和调整。