maneira correta para inicializar uma rede neural sequencial Keras?

votos
2

Eu estou tentando inicializar uma rede neural Keras. Meu X é uma matriz de forma (70000, 4) e quero 64 nós na primeira camada

model = Sequential() 
model.add(Dense(64, input_shape=(X.shape)))

A sintaxe acima é incorrecto. O que é correto para o meu model.add ()?

Publicado 16/04/2016 em 17:46
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Acho que você tem 70000 amostras com 4 pontos cada. Nesse caso, use Dense (64, input_shape=(4,))e ele deve funcionar.

O líquido seria iterar sobre as amostras em pedaços de batch_size, apesar de sua rede é provável pequena o suficiente para que você pode definir batch_sizepara alguns milhares, ou mesmo o mesmo tamanho que o de entrada.

Velha resposta Pensei cada amostra foi 70000x4 ...

A Densecamada não pode tomar uma matriz como uma entrada. A partir da documentação Keras, Dense(n_nodes, input_shape=(n_inputs,))é equivalente a Dense(n_nodes, input_dim=n_inputs), e que parece ser o único tipo de entrada que leva. Aqui n_inputsé um inteiro.

Você tem basicamente duas opções: ou achatar X antes de passá-la para a rede com X.reshape(-1), ou usar Reshapecomo a primeira camada, como este:

model = Sequential()
model.add(Reshape((X.size,), input_shape=(X.shape)))
model.add(Dense(64))

Você pode ser capaz de usar Flatten, em vez de Reshape, embora eu não posso dizer a partir da documentação se Flattenpode tomar um input_shapeparâmetro.

Respondeu 16/04/2016 em 23:52
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more