erste die Achsen nicht übereinstimmen-array-Fehler, wenn Sie versuchen zu visualisieren, die alle Ebenen im caffe mit Klassifizierung.ipny

Ich bin ein Neuling in python und habe eine sehr grundlegende Kenntnisse der Sprache, gesagt haben, dass ich versuche, die Visualisierung für alle Ebenen, sowohl für die GEWICHTE und die Filter.Für diese, anstatt zu wiederholen:

# the parameters are a list of [weights, biases]
filters = net.params['conv1'][0].data
vis_square(filters.transpose(0, 2, 3, 1))

und ändern von layer-Namen, ich habe versucht, über eine Schleife wie diese :

 for layer_name, param in net.params.iteritems():
    # the parameters are a list of [weights, biases]
    filters = net.params[layer_name][0].data
    vis_square(filters.transpose(0, 2, 3, 1))

nun, es funktioniert gut für die erste Schicht, sondern Sie gibt diesen Fehler und beendet die Ausführung:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-16-cf7d5999a45c> in <module>()
      2     # the parameters are a list of [weights, biases]
      3     filters = net.params[layer_name][0].data
----> 4     vis_square(filters.transpose(0, 2, 3, 1))

ValueError: axes don't match array

- Und das ist die definition von vis_square() (definiert in der Klassifizierung.ipny im Beispiel-Verzeichnis von caffe):

def vis_square(data):
    """Take an array of shape (n, height, width) or (n, height, width, 3)
       and visualize each (height, width) thing in a grid of size approx. sqrt(n) by sqrt(n)"""

    # normalize data for display
    data = (data - data.min()) / (data.max() - data.min())

    # force the number of filters to be square
    n = int(np.ceil(np.sqrt(data.shape[0])))
    padding = (((0, n ** 2 - data.shape[0]),
               (0, 1), (0, 1))                 # add some space between filters
               + ((0, 0),) * (data.ndim - 3))  # don't pad the last dimension (if there is one)
    data = np.pad(data, padding, mode='constant', constant_values=1)  # pad with ones (white)

    # tile the filters into an image
    data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3) + tuple(range(4, data.ndim + 1)))
    data = data.reshape((n * data.shape[1], n * data.shape[3]) + data.shape[4:])

    plt.imshow(data); plt.axis('off')

Was ist hier falsch?
Ich wäre dankbar, wenn jemand kann mir eine hand auf diese.

InformationsquelleAutor Breeze | 2016-05-07

Schreibe einen Kommentar