Вопрос о размерности нейронной сети свертки Keras - PullRequest
0 голосов
/ 12 октября 2018

Я заинтересован в переходе от 3-D матрицы к 1-D матрице.1000 строк, 4 столбца, 16 образцов до 16 образцов с 1 из 4 заболеваний.

Я вспоминаю матричную алгебру: AX + B = Y В этом случае, скажем, B = 0, Y = 16x1. Как же тогда размерность AX работает таким образом?Какой слой я могу использовать для Y, чтобы в итоге получить размер 16x1 с 4 категориями?

И я бы запустил сеть свертки с такой формой:

conv2D (filter, kernel, input_shape)= (16,1000,4))

Как бы я закончил со слоем, который дает мне 4 категории, то есть плотный (4)?Пожалуйста, приведите пример.

Спасибо.

1 Ответ

0 голосов
/ 12 октября 2018

Мне действительно сложно понять твой вопрос.Вы имеете в виду, что ваши входные данные представляют собой вектор признаков с 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 следует использовать только в том случае, есливвод подобен изображению, но это не ваш случай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...