Мне действительно сложно понять твой вопрос.Вы имеете в виду, что ваши входные данные представляют собой вектор признаков с 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()
Эта модель будет принимать 2D-тензор формы (batch_size, 1000)
и прогнозировать 2D-тензор формы (batch_size, 4)
.
Кстати, Conv2D
следует использовать только в том случае, есливвод подобен изображению, но это не ваш случай.