首页 > 解决方案 > 如何在 3D 阵列上实现训练有素的神经网络模型?

问题描述

我有一个神经网络模型,它使用 2D 样本和特征数组 (1125, 8) 进行训练(这里 1125 是样本数,8 是特征数)。现在,我想使用该模型来预测特征层 3D 数组(在下面的代码中称为“finalyrs”)(8、496、495)(这里 8 是特征的数量(与训练过程中使用的特征相同) ) 和 (496, 495) 是图像中的行数和列数。)我可以使用相似的训练数据集数组轻松地在数据集上实现模型。但是,这里的情况不同。有人可以帮我编写可以实现模型并创建分类为所需类别数量的图像的代码吗?

#####Neural network
model = Sequential()
model.add(Dense(16, input_dim=np.size(X_train, 1), activation='relu'))
model.add(Dense(12, activation='relu'))
model.add(Dense(5, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam',     
metrics= 
['accuracy'])

#Training the model
history = model.fit(X_train, y_train, epochs=100, batch_size=30)

#Prediction
finalyrs=np.array([R,G,B,h,s,EXG,GLI,WT])

标签: arrayspython-3.ximage-processingneural-network

解决方案


def get_model():
Input_1 = Input(shape=(256, 512, 512, 1))
MaxPooling3D_27 = MaxPooling3D(pool_size= (1,3,3))(Input_1)
Convolution3D_1 = Convolution3D(kernel_dim1= 4,nb_filter= 10,activation= 'relu' ,kernel_dim3= 4,kernel_dim2= 4)(MaxPooling3D_27)
Convolution3D_7 = Convolution3D(kernel_dim1= 4,nb_filter= 10,activation= 'relu' ,kernel_dim3= 4,kernel_dim2= 4)(Convolution3D_1)
BatchNormalization_28 = BatchNormalization()(Convolution3D_7)
MaxPooling3D_12 = MaxPooling3D(pool_size= (2,2,2))(BatchNormalization_28)
SpatialDropout3D_1 = SpatialDropout3D(p= 0.5)(MaxPooling3D_12)
Convolution3D_9 = Convolution3D(kernel_dim1= 2,nb_filter= 20,activation= 'relu' ,kernel_dim3= 2,kernel_dim2= 2)(SpatialDropout3D_1)
Convolution3D_11 = Convolution3D(kernel_dim1= 2,nb_filter= 20,activation= 'relu' ,kernel_dim3= 2,kernel_dim2= 2)(Convolution3D_9)
BatchNormalization_9 = BatchNormalization()(Convolution3D_11)
MaxPooling3D_14 = MaxPooling3D(pool_size= (2,2,2))(BatchNormalization_9)
SpatialDropout3D_4 = SpatialDropout3D(p= 0.5)(MaxPooling3D_14)
Convolution3D_12 = Convolution3D(kernel_dim1= 2,nb_filter= 40,activation= 'relu' ,kernel_dim3= 2,kernel_dim2= 2)(SpatialDropout3D_4)
Convolution3D_13 = Convolution3D(kernel_dim1= 2,nb_filter= 40,activation= 'relu' ,kernel_dim3= 2,kernel_dim2= 2)(Convolution3D_12)
MaxPooling3D_23 = MaxPooling3D(pool_size= (2,2,2))(Convolution3D_13)
BatchNormalization_23 = BatchNormalization()(MaxPooling3D_23)
SpatialDropout3D_5 = SpatialDropout3D(p= 0.5)(BatchNormalization_23)
GlobalMaxPooling3D_1 = GlobalMaxPooling3D()(SpatialDropout3D_5)
Dense_1 = Dense(activation= 'relu' ,output_dim= 10)(GlobalMaxPooling3D_1)
Dropout_14 = Dropout(p= 0.3)(Dense_1)
Dense_6 = Dense(activation= 'relu' ,output_dim= 10)(Dropout_14)
Dense_2 = Dense(activation= 'softmax' ,output_dim= 2)(Dense_6)

return Model([Input_1],[Dense_2])

推荐阅读