arrays - 如何在 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])
解决方案
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])
推荐阅读
- java - 在Android Edittext中将数字设置为下标时在aftertextchanged中获取ANR
- flutter - Flutter - 焦点更改时的文本字段反应
- python - 如何使用 python 创建包含签名字段的 PDF 文件?
- class - 如何将一个类的两个对象与可空字段合并,保持非空值?
- drupal - 管理 drupal 管理员登录和 adfs 登录
- sql - 试图在 oracle 中转换日期时间
- google-cloud-platform - Google Cloud SQL 只读副本无法复制
- python - pandas 使用字典或实际和预期字符串列表替换数据
- javascript - 循环一个 json 数组列表
- java - 需要帮助,我是 Android Studio 的初学者