2016-06-28 3 views
-1

Je vais avoir un NumpyArray 3D que je veux traverser dans un réseau neuronal de Keras. En raison d'un codage à chaud, le tableau est devenu un tableau 3D.Tableau numpy 3D dans Theano

[ 
    [[0,1,0,0], [1,0,0,0]], 
    [[0,0,0,1], [1,1,0,0]], 
    [[0,0,1,0], [0,0,0,1]] 
    ] 

Depuis Keras ne peut calculer des tableaux 2D, ma question est, comment puis-je réduire la dimensionnalité et l'utiliser dans un keras de NN séquentiel?

Je reçois actuellement l'erreur:

TypeError: ('Bad input argument to theano function with name "D:\\Python27\\lib\\site-packages\\keras\\backend\\theano_backend.py:503" at index 0(0-based)', 'Wrong number of dimensions: expected 2, got 3 with shape (32L, 10L, 12L).') 
+0

S'il vous plaît poster ce que vous souhaitez le tableau 2D être (et utiliser une gamme de numéros, pas seulement 0 et 1, donc nous pouvons voir la solution unique que vous voulez). – tom10

+0

J'utilise un encodage à chaud. Il n'y a aucun sens dans une gamme plus élevée de nombres. – AlcuPala

Répondre

0

Vous pouvez utiliser numpy.ndarray.flatten pour le faire dans un tableau 1D. Exemple:

import numpy as np 
a = np.array(
    [ 
     [[0, 1, 0, 0], [1, 0, 0, 0]], 
     [[0, 0, 0, 1], [1, 1, 0, 0]], 
     [[0, 0, 1, 0], [0, 0, 0, 1]] 
    ] 
    ) 
a.flatten() 

De ce fait, si vous voulez le diviser par ligne, je vous conseille de faire

import numpy as np 
a = np.array(
    [ 
     [[0, 1, 0, 0], [1, 0, 0, 0]], 
     [[0, 0, 0, 1], [1, 1, 0, 0]], 
     [[0, 0, 1, 0], [0, 0, 0, 1]] 
    ] 
    ) 
a = map(np.ndarray.flatten, a) 
+0

Merci, mais Theano ne mange que des tableaux 2D. – AlcuPala