我对从3-D矩阵转换为1-D矩阵感兴趣。 1000行,4列,16个样本至16个样本中有1of4种疾病。
我回想矩阵代数:AX + B = Y 在这种情况下,说B = 0,Y = 16x1 那么,AX的尺寸如何以这种方式计算出来?我可以在Y的哪一层使用最终得到4个类别的16x1尺寸?
我会以这样的形状启动卷积网络吗?
conv2D(过滤器,内核,input_shape =(16,1000,4))
我如何以一个给我4个类别(即density(4))的图层结束它? 请举个例子。
谢谢。
答案 0 :(得分:0)
我真的很难理解您的问题。您是说您的输入是一个1000维的特征向量,总共有16个维,而网络输出(即目标)是四种可能的疾病之一?
在这种情况下,您会误解CNN的输入形状,该形状未考虑其批量大小(您可以使用不同的批量大小,因此我们希望将此参数与模型分离)。
根据您对1000像素特征的理解,您需要在将特征归一化到模型之前应用一些特征归一化。
from keras.layers import *
from keras.models import Model
# 1. define model parameters
# 1.1 dropout rate, you may want to use 0 first
dropout_rate = 0.2
# 1.2 mlp structure
fc_nodes = [128, 32, 8]
# activation, e.g. relu or tanh
activation = 'relu'
# 2. define model
# 2.1 define input
# note: batch_size=16 is NOT included in shape
feat_in = Input(shape=(1000,), name='feat_in')
# 2.2 define body
x = feat_in
for idx, nb_nodes in enumerate( fc_nodes ) :
x = Dense( nb_nodes, activation=activation, name='fc-{}'.format(idx) )(x)
if ( dropout_rate > 0 ) :
x = Dropout( dropout_rate, name='dropout-{}'.format(idx))(x)
# 2.3 define output
pred_out = Dense( 4, activation='softmax', name='pred_out')(x)
# 2.4 define model
model = Model( inputs=feat_in, outputs=pred_out, name='my_model')
# 3. display model architecture
print model.summary()
此模型将采用形状为(batch_size, 1000)
的2D张量,并预测形状为(batch_size, 4)
的2D张量。
顺便说一句,Conv2D
仅在您输入的图像类似图片时才使用,而不是这种情况。