首页 > 解决方案 > 使用 Tensorflow 和 Keras 训练高光谱数据

问题描述

我正在寻找一种在 Tensorflow 上训练高光谱图像数据的方法。训练样本以 CSV 编码,具有任意 xy 维度但深度恒定:数据如下所示:

Sample1.csv50x4x220(第 1-50 行应该与第 51-100、101-150 和 151-200 行对齐)
Sample2.csv18x71x220(第 1-18 行应该与第 19-36 行对齐等)
Sample3.csv : 33x41x220 (同上)
....
Sample100.csv : 15x8x220 (同上)

我可以使用任何项目示例吗?提前致谢。

标签: csvdataframetensorflowmultidimensional-arraykeras

解决方案


这是对用于对高光谱数据进行分类的 DL 算法的调查。

由于您有数据或不同大小的数据,您将不得不创建数据块,您将无法提供不同大小的数据。

例如,您可以(16, 16, 220)向您的网络提供补丁。

我在一个带有多光谱波段图像的 CNN 上工作,我的波段比你少,补丁的大小显然很重要,我在图像分割中使用了 UNET。

(None, None, 220)使用作为输入的示例进行编辑:

model = Sequential()

# this applies 32 convolution filters of size 3x3 each.
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(None, None, 220)))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

# model.add(Flatten())
# Replace flatten by GlobalPooling example :
model.add(GlobalMaxPooling2D()) 
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))

adam = Adam(lr=1e-4)
model.compile(loss='categorical_crossentropy', optimizer=adam)



推荐阅读