2017-12-22 15 views
1

Ich lerne tensorflow. Nachdem ich das tensorflow Tutorial MNist für Experten (https://www.tensorflow.org/get_started/mnist/pros) abgeschlossen habe, versuche ich das trainierte Modell zu verwenden, um Rückschlüsse zu ziehen.konvertieren [28,28,2] Matlab-Array zu [2, 28, 28, 1] Tensor

  • Ich habe zwei [28x28] Bilder und sie in eine [28x28x2] gestellt hatten und gespeichert Matlab Datei.

  • Dann habe ich scipy.io laden Sie das Array in python.

    Allerdings erwartet mein Netzwerk einen [2, 28, 28, 1] Tensor.

    Wie kann ich [28x28x2] Array zu einem [2, 28, 28, 1] Tensor konvertieren?

+0

versuchte, die Frage lesbarer zu machen und markierte Punkte/Schritte, die bis jetzt genommen wurden. versuchen Sie, Ihren Post lesbar zu machen, so dass Sie richtige Antworten erhalten, anstatt downvotes –

+0

Sie erstellen das Array in MATLAB und verwenden es in Python. Möchten Sie diese Konvertierung in MATLAB oder Python durchführen? Bitte seien Sie spezifisch und markieren Sie Ihre Frage entsprechend. –

Antwort

2

Zum einen das Array transponieren, so dass 28x28x22x28x28 wird (dritte Dimension geht zuerst, dann 1. dann 2.).

arr = arr.transpose((2, 0, 1)) 

Achtung: Sie können die Form haben könnte 2x28x28 erhalten arr.reshape((2, 28, 28)) unter Verwendung, aber das würde die Reihenfolge Ihrer Daten haben vermasselt. Ich habe transpose verwendet, weil ich glaube, dass Sie arr[0] ein Bild sein wollen, und das gleiche für arr[1].

Dann das Array erweitern, so dass Sie diese letzte Dimension bekommen

arr = np.expand_dims(arr, -1) 

Ein Beispiel mit 4x4 statt 28x28:

>>> arr = np.empty((4, 4, 2)) # an empty array 
>>> arr[..., :] = 0, 1 # first picture is all 0s and second is all 1s 
>>> arr[..., 0] 
array([[ 0., 0., 0., 0.], 
     [ 0., 0., 0., 0.], 
     [ 0., 0., 0., 0.], 
     [ 0., 0., 0., 0.]]) 
>>> arr[..., 1] 
array([[ 1., 1., 1., 1.], 
     [ 1., 1., 1., 1.], 
     [ 1., 1., 1., 1.], 
     [ 1., 1., 1., 1.]]) 
>>> arr.shape 
(4, 4, 2) 

Nun werden die Transformationen

>>> arr = arr.transpose((2, 0, 1)) 
>>> arr = np.expand_dims(arr, -1) 
>>> arr.shape 
(2, 4, 4, 1) 
Verwandte Themen