In [1]:
from __future__ import division, print_function,absolute_import
import pylab as plt
import amitgroup.plot as gr
import numpy as np
import amitgroup as ag
import os
import pnet
import matplotlib.pylab as plot
from pnet.cyfuncs import index_map_pooling
from Queue import Queue
def extract(ims,allLayers):
    #print(allLayers)
    curX = ims
    for layer in allLayers:
        #print('-------------')
        #print(layer)
        curX = layer.extract(curX)
        #print(np.array(curX).shape)
        #print('------------------')
    return curX

def partsPool(originalPartsRegion, numParts):
    partsGrid = np.zeros((1,1,numParts))
    for i in range(originalPartsRegion.shape[0]):
        for j in range(originalPartsRegion.shape[1]):
            if(originalPartsRegion[i,j]!=-1):
                partsGrid[0,0,originalPartsRegion[i,j]] = 1
    return partsGrid



def test(ims,labels,net):
    yhat = net.classify((ims,500))
    return yhat == labels


/Users/jiajunshen/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/__init__.py:1155: UserWarning:  This call to matplotlib.use() has no effect
because the backend has already been chosen;
matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.

  warnings.warn(_use_error_msg)

In [3]:
#def trainPOP():
#X = np.load("testMay151.npy")
#X = np.load("_3_100*6*6_1000*1*1_Jun_16_danny.npy")
#X = np.load("original6*6.npy")
#X = np.load("sequential6*6.npy")
#X = np.load("Jul22ModuloShiftRot.npy")
X = np.load("./Modulo_shift_Rot_p10s66r8ms55tp10000fr0th80.npy")
#X = np.load('original6*6 2.npy')
model = X.item()
# get num of Parts
numParts = model['layers'][0]['num_parts']
print(numParts,model)
net = pnet.PartsNet.load_from_dict(model)
allLayer = net.layers
shiftRotationLayer = allLayer[0]
ims,labels = ag.io.load_mnist('training')
trainingDataNum = 100000
firstLayerShape = 6
secondLayerCodedNumber = 0
secondLayerShape = 12
codeShape = secondLayerShape - firstLayerShape + 1
num_rot = shiftRotationLayer._num_rot
part_shape = shiftRotationLayer._part_shape
sample_shape = shiftRotationLayer._sample_shape
largeModuleShiftRotationPartsLayer = pnet.OrientedPartsLayer(50, num_rot, (secondLayerShape, secondLayerShape), settings = dict(outer_frame = 0, em_seed = None, n_init = 2, threshold = 30, samples_per_image = 40, max_samples = 100000, train_limit = 100000, rotation_spread_radius = 0, min_prob = 0.0005, bedges = dict(k = 5, minimum_contrast = 0.05, spread = 'orthogonal', radius = 1, contrast_insensitive = False, )))
#largeModuleShiftRotationPartsLayer = pnet.ModuloShiftingRotationPartsLayer(num_parts = 50, part_shape = (secondLayerShape - 2,secondLayerShape - 2),shifting_shape = (3,3),num_rot = num_rot, settings = shiftRotationLayer._settings) 
patches, patches_original = largeModuleShiftRotationPartsLayer._get_patches(ims[0:10000])


10 {'layers': [{'part_shape': (6, 6), 'visparts': array([[[  6.92026982e-01,   7.72583413e-01,   8.35216657e-01,
           8.52502699e-01,   7.96845769e-01,   6.58149050e-01],
        [  7.91173862e-01,   8.37266208e-01,   8.33159125e-01,
           7.30197260e-01,   5.69480142e-01,   4.11457757e-01],
        [  5.25008922e-01,   4.90844966e-01,   3.93102118e-01,
           2.89114910e-01,   1.81829084e-01,   1.15470220e-01],
        [  1.50427416e-01,   7.85731444e-02,   4.89000239e-02,
           3.06463581e-02,   1.49049695e-02,   6.63615095e-03],
        [  1.09983604e-02,   4.37569615e-03,   1.25928408e-03,
           1.25564373e-03,   4.92618954e-04,   2.63134844e-19],
        [  5.51683109e-18,   0.00000000e+00,   0.00000000e+00,
           0.00000000e+00,   0.00000000e+00,   0.00000000e+00]],

       [[  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
           2.30152096e-18,   1.23085906e-03,   9.38406089e-03],
        [  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
           0.00000000e+00,   2.48220196e-17,   8.14516349e-03],
        [  0.00000000e+00,   0.00000000e+00,   1.15996656e-18,
           1.02333320e-03,   1.11845172e-02,   5.73680373e-02],
        [  6.39476596e-05,   1.48538701e-04,   3.75018817e-03,
           2.33105783e-02,   1.03329054e-01,   2.41233579e-01],
        [  1.24642028e-02,   3.32470923e-02,   9.97839777e-02,
           2.46558016e-01,   4.49576294e-01,   5.93539764e-01],
        [  1.83262289e-01,   3.17513419e-01,   5.22599887e-01,
           7.31866544e-01,   8.41703474e-01,   8.58754192e-01]],

       [[  2.57797973e-01,   5.00929260e-01,   5.79723734e-01,
           4.67926787e-01,   3.52852377e-01,   2.90449745e-01],
        [  3.24812735e-01,   6.36902815e-01,   7.14939871e-01,
           5.45024822e-01,   3.56941586e-01,   2.76218716e-01],
        [  3.77919459e-01,   7.84869825e-01,   8.21274606e-01,
           5.64106525e-01,   3.42026391e-01,   2.28926544e-01],
        [  3.33219412e-01,   8.30174149e-01,   8.83026883e-01,
           6.08647805e-01,   3.09026001e-01,   2.04280610e-01],
        [  2.22982661e-01,   7.66693350e-01,   9.16745338e-01,
           6.38503349e-01,   3.45964648e-01,   1.93948346e-01],
        [  1.04711691e-01,   5.81891556e-01,   8.99656809e-01,
           7.50560861e-01,   4.49850420e-01,   2.85492486e-01]],

       [[  5.99947607e-01,   6.83055675e-01,   6.47414584e-01,
           4.44043715e-01,   2.21826921e-01,   9.05413011e-02],
        [  7.51328243e-01,   8.58335826e-01,   8.47062239e-01,
           6.62375334e-01,   3.37026017e-01,   1.26559887e-01],
        [  6.64555370e-01,   7.70460424e-01,   8.88428444e-01,
           7.79472424e-01,   4.85462400e-01,   2.07480722e-01],
        [  4.85765728e-01,   5.72905819e-01,   7.68100315e-01,
           8.29108732e-01,   6.04129016e-01,   3.35245642e-01],
        [  3.03448383e-01,   3.09710982e-01,   5.83651601e-01,
           7.82944645e-01,   6.99861742e-01,   4.26488043e-01],
        [  1.59423451e-01,   2.23359434e-01,   4.00707207e-01,
           6.71521303e-01,   7.19143436e-01,   5.07352385e-01]],

       [[  2.58351077e-01,   6.24797833e-01,   9.04530008e-01,
           8.80775402e-01,   7.64642815e-01,   6.36893105e-01],
        [  5.99850563e-01,   9.13623881e-01,   8.28740107e-01,
           5.76112969e-01,   4.33201735e-01,   4.20852799e-01],
        [  8.71736349e-01,   8.33948712e-01,   5.13840253e-01,
           1.99386078e-01,   1.46844526e-01,   2.66862428e-01],
        [  8.68950339e-01,   5.82928399e-01,   1.61343048e-01,
           2.79394714e-02,   4.64476679e-02,   1.46531819e-01],
        [  7.18327191e-01,   2.50351028e-01,   4.18298181e-02,
           3.11540901e-03,   9.58272262e-03,   8.98054568e-02],
        [  4.06091008e-01,   9.38938593e-02,   2.02056532e-02,
           7.99202445e-03,   2.20463421e-02,   6.28599346e-02]],

       [[  2.42963279e-01,   1.03355114e-01,   1.72988406e-02,
           2.72425953e-02,   2.11542211e-02,   0.00000000e+00],
        [  1.09277515e-01,   5.54262486e-02,   1.45446410e-02,
           0.00000000e+00,   0.00000000e+00,   0.00000000e+00],
        [  2.07691548e-01,   6.09852832e-02,   1.23899646e-02,
           0.00000000e+00,   0.00000000e+00,   0.00000000e+00],
        [  4.32442418e-01,   2.58568550e-01,   7.75670751e-02,
           7.21813920e-03,   0.00000000e+00,   0.00000000e+00],
        [  5.87851339e-01,   4.73239790e-01,   3.17381246e-01,
           1.17203371e-01,   2.70260068e-02,   1.08084866e-02],
        [  6.45158328e-01,   5.34991029e-01,   4.90843824e-01,
           3.23905583e-01,   1.43129823e-01,   5.93387834e-02]],

       [[  0.00000000e+00,   4.61689805e-05,   1.01941410e-03,
           1.68208407e-02,   8.24668026e-02,   2.57206261e-01],
        [  1.23720641e-03,   1.48240721e-02,   5.80151959e-02,
           1.64396564e-01,   3.70726294e-01,   5.90771279e-01],
        [  7.07190735e-02,   1.89200808e-01,   3.99718875e-01,
           6.54505173e-01,   8.46809666e-01,   9.07902906e-01],
        [  4.00031480e-01,   6.28576165e-01,   8.39995230e-01,
           9.39269224e-01,   9.02073821e-01,   7.57373762e-01],
        [  7.38302727e-01,   8.94405177e-01,   9.06977017e-01,
           7.67807675e-01,   5.50626494e-01,   3.68050888e-01],
        [  7.61269791e-01,   7.22427181e-01,   5.61628035e-01,
           3.32142663e-01,   1.53037929e-01,   6.12222489e-02]],

       [[  0.00000000e+00,   1.87913876e-03,   3.55510646e-02,
           3.17882118e-01,   5.62502440e-01,   6.76234449e-01],
        [  0.00000000e+00,   0.00000000e+00,   6.81577421e-04,
           7.12157499e-02,   3.44900623e-01,   5.22267042e-01],
        [  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
           0.00000000e+00,   7.67529321e-02,   2.89073909e-01],
        [  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
           0.00000000e+00,   0.00000000e+00,   4.37633360e-02],
        [  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
           0.00000000e+00,   1.72912878e-02,   9.98049621e-02],
        [  0.00000000e+00,   0.00000000e+00,   1.18283567e-02,
           8.38209685e-02,   2.71648116e-01,   4.99904179e-01]],

       [[  6.86277148e-01,   8.54595989e-01,   8.92343646e-01,
           8.71151555e-01,   7.77750511e-01,   6.90001814e-01],
        [  6.37760752e-01,   8.77525465e-01,   9.16338426e-01,
           7.98332106e-01,   5.83742682e-01,   4.29079207e-01],
        [  4.24530072e-01,   7.54212260e-01,   8.72074964e-01,
           7.94335394e-01,   4.16002438e-01,   1.90320806e-01],
        [  1.83569738e-01,   5.07994138e-01,   7.82322497e-01,
           8.16855329e-01,   4.84586777e-01,   2.34218560e-01],
        [  5.81424881e-02,   2.33418946e-01,   5.53199531e-01,
           8.24098121e-01,   7.19078683e-01,   4.25087247e-01],
        [  8.39244139e-03,   8.00071526e-02,   2.59559148e-01,
           6.49527439e-01,   8.58274133e-01,   6.84730117e-01]],

       [[  1.15931566e-01,   2.82770564e-02,   7.86960708e-03,
           0.00000000e+00,   4.79618097e-17,   1.35000493e-02],
        [  8.10051616e-02,   1.67606138e-02,   3.70481601e-03,
           0.00000000e+00,   1.36533619e-16,   3.84307972e-02],
        [  3.74506244e-02,   5.01010329e-03,   2.75913416e-03,
           1.87226961e-03,   1.66533455e-02,   1.05515241e-01],
        [  1.47805016e-02,   2.78991681e-03,   1.29088062e-02,
           3.28139884e-02,   8.56105235e-02,   2.32058117e-01],
        [  3.76007206e-02,   3.35964856e-02,   8.54133410e-02,
           1.46967226e-01,   2.66853459e-01,   4.39198622e-01],
        [  1.35473554e-01,   2.14625608e-01,   3.24741436e-01,
           4.46781579e-01,   5.59756203e-01,   6.13762798e-01]]]), 'num_rot': 8, 'settings': {'max_samples': 20000, 'outer_frame': 0, 'samples_per_image': 20, 'rotation_spreading_radius': 0, 'min_prob': 0.005, 'threshold': 80, 'bedges': {'contrast_insensitive': False, 'k': 5, 'spread': 'orthogonal', 'radius': 1, 'minimum_contrast': 0.05}}, 'shifting_shape': (5, 5), 'sample_shape': (10, 10), 'parts': array([[[[  4.61832799e-01,   4.51359505e-01,   5.35750483e-02, ...,
            5.15407833e-01,   1.73816705e-01,   1.97180304e-01],
         [  5.61329251e-01,   6.22960714e-01,   7.67371832e-02, ...,
            4.97482431e-01,   1.49848931e-01,   1.41389759e-01],
         [  7.12386719e-01,   7.60926497e-01,   1.22658610e-01, ...,
            4.70493485e-01,   1.21852959e-01,   8.07653574e-02],
         [  7.72004040e-01,   7.96777442e-01,   2.16314199e-01, ...,
            3.78650608e-01,   7.29103610e-02,   6.00201410e-02],
         [  7.83081583e-01,   8.15710023e-01,   3.18227581e-01, ...,
            2.72709028e-01,   3.70594159e-02,   3.32325755e-02],
         [  6.87210486e-01,   7.74219514e-01,   3.60523654e-01, ...,
            1.82275954e-01,   1.91339375e-02,   4.57199873e-02]],

        [[  8.17321206e-01,   7.14400806e-01,   1.34944612e-02, ...,
            2.61430053e-01,   1.63746266e-01,   3.73615307e-01],
         [  9.57099698e-01,   8.06646526e-01,   5.65961729e-02, ...,
            2.00201441e-01,   1.01913394e-01,   3.32527693e-01],
         [  9.76032226e-01,   8.76535750e-01,   1.35548841e-01, ...,
            1.28298098e-01,   4.87411883e-02,   2.75125881e-01],
         [  9.61329305e-01,   9.09969789e-01,   2.37663645e-01, ...,
            8.33836742e-02,   2.88016112e-02,   2.21147983e-01],
         [  8.31419940e-01,   8.84793555e-01,   2.56193342e-01, ...,
            3.90735145e-02,   5.63947633e-03,   1.75629353e-01],
         [  6.51560896e-01,   8.18932581e-01,   2.12084580e-01, ...,
            7.85498488e-03,   5.63947633e-03,   1.75025123e-01]],

        [[  8.81772364e-01,   5.90936568e-01,   4.35045317e-02, ...,
            2.23565380e-02,   6.10271902e-02,   5.02719044e-01],
         [  9.61530715e-01,   7.00302115e-01,   4.87411882e-02, ...,
            3.22255786e-03,   4.00805639e-02,   4.69083573e-01],
         [  9.67170244e-01,   7.92749245e-01,   6.82779455e-02, ...,
            2.01409869e-04,   2.57804632e-02,   3.72406795e-01],
         [  8.59818732e-01,   8.31621403e-01,   7.41188202e-02, ...,
            2.01409869e-04,   1.89325277e-02,   2.39274871e-01],
         [  6.66062395e-01,   7.79254837e-01,   6.70694748e-02, ...,
            2.01409869e-04,   1.32930513e-02,   1.93554831e-01],
         [  5.00302137e-01,   6.39274978e-01,   4.18932412e-02, ...,
            1.18831823e-02,   1.87311178e-02,   1.70191309e-01]],

        [[  6.61631431e-01,   4.25579066e-01,   4.95468703e-02, ...,
            8.05639432e-04,   2.01409869e-04,   4.50352455e-01],
         [  6.91842954e-01,   4.47331384e-01,   3.10171624e-02, ...,
            2.01409869e-04,   2.01409869e-04,   3.57099697e-01],
         [  6.10070505e-01,   4.70694918e-01,   1.89325277e-02, ...,
            2.01409869e-04,   2.01409869e-04,   2.19335347e-01],
         [  4.64451169e-01,   4.11480374e-01,   6.44511580e-03, ...,
            2.01409869e-04,   2.01409869e-04,   1.62134944e-01],
         [  3.12386718e-01,   3.33534797e-01,   2.01409869e-04, ...,
            6.44513899e-03,   5.63947633e-03,   1.44612256e-01],
         [  2.30010070e-01,   2.18932539e-01,   2.01409869e-04, ...,
            2.47734370e-02,   2.31621349e-02,   1.40584112e-01]],

        [[  2.31419951e-01,   2.46525722e-01,   3.74622782e-02, ...,
            2.01409869e-04,   2.01409869e-04,   1.81671702e-01],
         [  1.58509579e-01,   1.56092691e-01,   1.26888217e-02, ...,
            2.01409869e-04,   2.01409869e-04,   8.88217521e-02],
         [  1.29909377e-01,   6.08258233e-02,   6.44511580e-03, ...,
            2.01409869e-04,   2.01409869e-04,   3.56495468e-02],
         [  1.19033221e-01,   3.34340382e-02,   2.01409869e-04, ...,
            2.01433055e-04,   2.01409869e-04,   3.14199395e-02],
         [  4.14904330e-02,   2.88016112e-02,   2.01409869e-04, ...,
            1.24874351e-02,   5.63947633e-03,   4.45115810e-02],
         [  2.01409869e-04,   2.88016112e-02,   2.01409869e-04, ...,
            3.64552094e-02,   2.25579053e-02,   5.11581299e-02]],

        [[  1.73212487e-02,   4.87412312e-02,   1.61132157e-03, ...,
            2.01409869e-04,   2.01409869e-04,   1.79254783e-02],
         [  6.44511580e-03,   2.01414126e-03,   2.01409869e-04, ...,
            2.01409869e-04,   2.01409869e-04,   1.10775428e-02],
         [  6.24370593e-03,   2.01452484e-04,   2.01409869e-04, ...,
            2.01409869e-04,   2.01409869e-04,   5.63947633e-03],
         [  2.01409869e-04,   2.01409869e-04,   2.01409869e-04, ...,
            2.01409869e-04,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   2.01409869e-04,   2.01409869e-04, ...,
            2.01433055e-04,   2.01409869e-04,   6.84793554e-03],
         [  2.01409869e-04,   2.01409869e-04,   2.01409869e-04, ...,
            2.94058640e-02,   2.41691843e-02,   2.39677744e-02]]],


       [[[  4.57200714e-02,   5.63343350e-01,   2.11278899e-01, ...,
            7.39174232e-01,   7.13192400e-01,   2.67673747e-01],
         [  8.09667144e-02,   8.62839891e-01,   5.57099675e-01, ...,
            5.60523688e-01,   4.46525734e-01,   1.09969819e-01],
         [  1.80261780e-01,   8.75528701e-01,   8.10070494e-01, ...,
            2.65659640e-01,   1.34944635e-01,   2.41691843e-02],
         [  1.71802565e-01,   7.49848955e-01,   8.62638522e-01, ...,
            3.98791772e-02,   7.65357501e-03,   1.65156092e-02],
         [  1.20644535e-01,   5.59516586e-01,   5.59718037e-01, ...,
            8.05639475e-04,   2.01409869e-04,   3.56495468e-02],
         [  6.18328529e-02,   3.74823736e-01,   1.94159102e-01, ...,
            6.84793554e-03,   6.24370593e-03,   6.76736863e-02]],

        [[  1.23262840e-01,   8.65861039e-01,   3.74823713e-01, ...,
            7.41389781e-01,   5.53675784e-01,   1.62537795e-01],
         [  2.77341337e-01,   9.68982880e-01,   7.77643516e-01, ...,
            4.33635513e-01,   2.40684848e-01,   6.76737044e-02],
         [  2.92849949e-01,   9.46827795e-01,   9.33534796e-01, ...,
            1.14602239e-01,   3.78650439e-02,   2.01409869e-04],
         [  1.63947633e-01,   7.88721101e-01,   8.03424021e-01, ...,
            8.05639475e-04,   2.01409869e-04,   1.14803625e-02],
         [  4.93454179e-02,   5.15810697e-01,   3.58509578e-01, ...,
            2.01409869e-04,   2.01409869e-04,   2.47734139e-02],
         [  1.36958711e-02,   2.49144008e-01,   6.52567860e-02, ...,
            2.01433055e-04,   1.18831823e-02,   4.91440312e-02]],

        [[  3.02719033e-01,   9.55891250e-01,   5.68580049e-01, ...,
            5.53272964e-01,   3.34743256e-01,   1.12990925e-01],
         [  4.33031218e-01,   9.81268882e-01,   8.73111794e-01, ...,
            1.97381726e-01,   8.15710086e-02,   2.69889224e-02],
         [  3.21852959e-01,   9.69587163e-01,   8.93252823e-01, ...,
            1.93353474e-02,   5.63946485e-03,   6.44511580e-03],
         [  8.09667672e-02,   7.83685854e-01,   5.42598241e-01, ...,
            2.01409869e-04,   2.01409869e-04,   8.05639475e-04],
         [  6.44511580e-03,   3.93152076e-01,   1.56092660e-01, ...,
            2.01409869e-04,   2.01409869e-04,   1.77240685e-02],
         [  2.01409869e-04,   1.44209466e-01,   5.63946485e-03, ...,
            2.01409869e-04,   6.24370593e-03,   2.47734139e-02]],

        [[  4.59214501e-01,   9.47834801e-01,   6.77945631e-01, ...,
            2.98489480e-01,   1.93554915e-01,   1.16012084e-01],
         [  4.70493442e-01,   9.73816717e-01,   7.57703928e-01, ...,
            6.68680881e-02,   1.30916300e-02,   3.92749244e-02],
         [  2.13494449e-01,   9.30312238e-01,   5.80463296e-01, ...,
            2.01409869e-04,   2.01409869e-04,   7.04934541e-03],
         [  4.04833836e-02,   6.21349500e-01,   2.47129898e-01, ...,
            2.01409869e-04,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   2.70694852e-01,   6.24370593e-03, ...,
            2.01409869e-04,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   3.68579945e-02,   2.01409869e-04, ...,
            2.01409869e-04,   2.01433055e-04,   1.79254783e-02]],

        [[  4.79556909e-01,   9.06344411e-01,   6.22356507e-01, ...,
            9.70795456e-02,   6.96878575e-02,   9.08358508e-02],
         [  3.16616302e-01,   8.86002024e-01,   5.50856057e-01, ...,
            5.63946485e-03,   2.01409869e-04,   1.38972809e-02],
         [  9.08358393e-02,   7.20040335e-01,   3.23262906e-01, ...,
            2.01409869e-04,   2.01409869e-04,   2.01409869e-04],
         [  6.24370593e-03,   3.62134956e-01,   5.51863470e-02, ...,
            2.01409869e-04,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   8.72104617e-02,   2.01409869e-04, ...,
            2.01409869e-04,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   5.63946485e-03,   2.01409869e-04, ...,
            5.63947633e-03,   2.01409869e-04,   6.24370593e-03]],

        [[  3.18026194e-01,   7.55891196e-01,   4.88418945e-01, ...,
            2.35649546e-02,   2.49748667e-02,   3.34340382e-02],
         [  1.30513583e-01,   7.17019187e-01,   3.73011143e-01, ...,
            6.24370593e-03,   2.01409869e-04,   2.01409869e-04],
         [  6.44511580e-03,   4.44713002e-01,   1.63343447e-01, ...,
            1.24874119e-02,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   1.17019146e-01,   1.24874545e-02, ...,
            2.33635448e-02,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   1.18831708e-02,   2.01409869e-04, ...,
            1.73211959e-02,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   2.01409869e-04,   2.01409869e-04, ...,
            2.81973288e-02,   2.01409869e-04,   2.01433055e-04]]],


       [[[  3.08157099e-02,   1.73212434e-01,   6.87210486e-01, ...,
            1.89929529e-01,   2.02014122e-01,   1.76032248e-01],
         [  5.63947633e-03,   1.84692797e-01,   6.51560896e-01, ...,
            2.15508560e-02,   9.66767370e-03,   7.85498488e-03],
         [  1.32930513e-02,   1.37965730e-01,   4.93454202e-01, ...,
            2.01409869e-04,   2.01409869e-04,   1.18831823e-02],
         [  2.01409869e-04,   3.90735145e-02,   2.28600201e-01, ...,
            2.01409869e-04,   2.01409869e-04,   2.47734370e-02],
         [  2.01409869e-04,   1.40986908e-03,   2.01409869e-04, ...,
            2.01409869e-04,   2.01409869e-04,   3.64552094e-02],
         [  2.01409869e-04,   2.01409869e-04,   2.01409869e-04, ...,
            2.01409869e-04,   2.01409869e-04,   2.94058640e-02]],

        [[  5.49848827e-02,   2.19335294e-01,   7.83081583e-01, ...,
            1.63343427e-01,   2.92447153e-01,   2.67270962e-01],
         [  2.88016112e-02,   2.42698839e-01,   8.37462236e-01, ...,
            3.38368580e-02,   2.92044310e-02,   3.90735145e-02],
         [  1.89325277e-02,   1.66163142e-01,   6.65256756e-01, ...,
            6.44511580e-03,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   3.14199395e-02,   3.11782489e-01, ...,
            2.01409869e-04,   2.01409869e-04,   6.44513899e-03],
         [  2.01409869e-04,   2.01409869e-04,   3.52467270e-02, ...,
            2.01409869e-04,   2.01409869e-04,   1.24874351e-02],
         [  2.01409869e-04,   2.01409869e-04,   2.01409869e-04, ...,
            2.01409869e-04,   2.01409869e-04,   2.01433055e-04]],

        [[  9.22457084e-02,   2.74118831e-01,   7.78046336e-01, ...,
            2.04833837e-01,   4.10674746e-01,   3.84491494e-01],
         [  4.87411882e-02,   3.75226521e-01,   9.61329305e-01, ...,
            4.57200402e-02,   8.01611278e-02,   9.60724959e-02],
         [  2.57804632e-02,   2.22960725e-01,   8.65861028e-01, ...,
            1.32930513e-02,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   4.71299093e-02,   4.52970807e-01, ...,
            2.01409869e-04,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   5.63947633e-03,   1.18831811e-01, ...,
            2.01409869e-04,   2.01409869e-04,   2.01433055e-04],
         [  2.01409869e-04,   2.01409869e-04,   6.24370593e-03, ...,
            1.71198388e-02,   2.01409869e-04,   2.01409869e-04]],

        [[  1.14803614e-01,   3.37764350e-01,   7.12386719e-01, ...,
            2.35649546e-01,   5.33131988e-01,   4.77744240e-01],
         [  9.58710975e-02,   4.65659605e-01,   9.82074522e-01, ...,
            5.23665659e-02,   1.35951661e-01,   1.28902328e-01],
         [  3.94763343e-02,   3.60725064e-01,   9.67170244e-01, ...,
            2.01409869e-04,   5.63947633e-03,   2.01409869e-04],
         [  2.01409869e-04,   8.86203423e-02,   6.09264865e-01, ...,
            2.01409869e-04,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   1.71198388e-02,   1.29909377e-01, ...,
            6.24370593e-03,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   2.01409869e-04,   2.01409869e-04, ...,
            3.42396249e-02,   2.01409869e-04,   2.01409869e-04]],

        [[  1.44209455e-01,   3.62134944e-01,   5.55891185e-01, ...,
            2.82578058e-01,   6.18731171e-01,   4.97885250e-01],
         [  1.51661631e-01,   4.95266879e-01,   9.56495468e-01, ...,
            5.31722054e-02,   1.77442106e-01,   2.00604261e-01],
         [  6.04229606e-02,   4.47734127e-01,   9.54884189e-01, ...,
            6.04229606e-04,   5.63947633e-03,   3.22255786e-03],
         [  2.01409869e-04,   1.86304117e-01,   6.90634494e-01, ...,
            6.04229606e-04,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   1.79254783e-02,   1.63343416e-01, ...,
            1.20845921e-02,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   2.01409869e-04,   6.44511580e-03, ...,
            5.78045795e-02,   1.18831823e-02,   2.01409869e-04]],

        [[  1.73816717e-01,   3.74622379e-01,   4.74521621e-01, ...,
            3.08962750e-01,   6.14501541e-01,   4.99697863e-01],
         [  2.00000000e-01,   4.95468289e-01,   8.18529665e-01, ...,
            5.27693973e-02,   2.35045348e-01,   2.44108804e-01],
         [  7.93554883e-02,   5.03524683e-01,   8.82376594e-01, ...,
            1.20845921e-03,   1.20845917e-03,   2.23565380e-02],
         [  7.65357497e-03,   2.51963734e-01,   6.56193364e-01, ...,
            1.36958711e-02,   2.01409869e-04,   8.05639432e-04],
         [  2.01409869e-04,   1.18831823e-02,   2.19939589e-01, ...,
            3.60523137e-02,   2.01409869e-04,   2.01409869e-04],
         [  2.01409869e-04,   2.01409869e-04,   1.73212487e-02, ...,
            7.02919914e-02,   3.50453172e-02,   2.01409869e-04]]],


       ..., 
       [[[  2.11981515e-01,   3.25345543e-01,   1.11520710e-01, ...,
            2.01843269e-01,   2.86636115e-01,   8.36866401e-01],
         [  3.24423885e-01,   1.42857105e-01,   3.41013742e-02, ...,
            2.48852801e-01,   5.45622228e-01,   8.86635975e-01],
         [  2.26728056e-01,   3.13363980e-02,   9.03225620e-02, ...,
            2.98612501e-01,   5.63133748e-01,   9.13364076e-01],
         [  1.44700423e-01,   8.11059691e-02,   5.61290426e-01, ...,
            7.83459315e-02,   4.16589763e-01,   5.46538710e-01],
         [  3.68663505e-03,   2.11059857e-01,   8.44239669e-01, ...,
            5.06912320e-02,   1.54838674e-01,   2.61751083e-01],
         [  2.94930804e-02,   1.29037163e-01,   9.13364073e-01, ...,
            9.21658763e-04,   2.58064454e-02,   5.25345495e-02]],

        [[  5.43778670e-02,   1.89861705e-01,   1.62211939e-01, ...,
            8.75575825e-02,   3.76037017e-01,   7.09672556e-01],
         [  1.93548338e-01,   8.75575824e-02,   3.13363980e-02, ...,
            3.44700378e-01,   6.38709767e-01,   9.18894029e-01],
         [  1.73271845e-01,   5.62211813e-02,   3.68663505e-03, ...,
            3.48391951e-01,   7.90783461e-01,   8.89396012e-01],
         [  2.03686581e-01,   1.82488435e-01,   4.52534700e-01, ...,
            2.34096389e-01,   6.27649860e-01,   8.11986547e-01],
         [  3.59446918e-02,   2.92165826e-01,   8.12903271e-01, ...,
            2.58064454e-02,   3.42857060e-01,   4.72810945e-01],
         [  8.94009001e-02,   3.13363980e-01,   9.91705071e-01, ...,
            2.58064454e-02,   7.74193361e-02,   8.01843124e-02]],

        [[  9.21658763e-04,   1.62211942e-01,   1.34562176e-01, ...,
            5.43778672e-02,   1.88940047e-01,   5.57603791e-01],
         [  1.15207345e-01,   5.62211813e-02,   2.76497629e-03, ...,
            2.63594648e-01,   5.24424081e-01,   8.16584967e-01],
         [  1.73271848e-01,   2.76497629e-03,   9.21658763e-04, ...,
            4.94009095e-01,   8.35944740e-01,   8.68207731e-01],
         [  1.77880141e-01,   1.56681990e-01,   3.38249006e-01, ...,
            3.33645411e-01,   8.53456257e-01,   8.64511227e-01],
         [  6.91244073e-02,   4.22119716e-01,   7.32718962e-01, ...,
            1.53917013e-01,   4.96774070e-01,   4.30414642e-01],
         [  1.22580613e-01,   4.48847816e-01,   9.91705071e-01, ...,
            2.58064454e-02,   1.31797203e-01,   1.88018384e-01]],

        [[  9.21658763e-04,   1.37327152e-01,   5.62211846e-02, ...,
            2.58064452e-02,   1.56687168e-01,   3.76958679e-01],
         [  5.80645021e-02,   3.13363980e-02,   9.21658763e-04, ...,
            3.03225975e-01,   5.44700571e-01,   6.88484275e-01],
         [  1.13364028e-01,   9.21658763e-04,   9.21658763e-04, ...,
            4.66359576e-01,   8.03686687e-01,   8.70962839e-01],
         [  1.44700426e-01,   1.56681990e-01,   3.35484032e-01, ...,
            5.33640422e-01,   9.28110617e-01,   6.39631423e-01],
         [  9.49308547e-02,   3.95391610e-01,   6.74654457e-01, ...,
            2.28571375e-01,   6.50691087e-01,   5.68663457e-01],
         [  1.59446966e-01,   5.81566682e-01,   9.35483890e-01, ...,
            5.06912320e-02,   2.04608242e-01,   2.21198100e-01]],

        [[  9.21658763e-04,   8.11059679e-02,   9.21658763e-04, ...,
            7.55811970e-02,   1.50230620e-01,   1.47465402e-01],
         [  2.94930804e-02,   9.21658763e-04,   9.21658763e-04, ...,
            2.99539340e-01,   4.70967870e-01,   4.53451420e-01],
         [  5.71428433e-02,   9.21658763e-04,   9.21658763e-04, ...,
            5.52073841e-01,   7.76036924e-01,   5.88018533e-01],
         [  8.57142650e-02,   1.25345592e-01,   2.78341188e-01, ...,
            5.87096874e-01,   9.84331801e-01,   7.21658812e-01],
         [  9.12442176e-02,   4.16589759e-01,   6.71889480e-01, ...,
            3.31797153e-01,   7.06912271e-01,   4.94930756e-01],
         [  9.95391485e-02,   5.48386964e-01,   9.32718914e-01, ...,
            1.00460805e-01,   2.86635875e-01,   1.99999952e-01]],

        [[  9.21658763e-04,   9.21658763e-04,   9.21658763e-04, ...,
            1.00460805e-01,   1.25345592e-01,   5.71428433e-02],
         [  9.21658763e-04,   9.21658763e-04,   9.21658763e-04, ...,
            2.74654553e-01,   5.41935593e-01,   2.43318155e-01],
         [  9.21658763e-04,   2.58113820e-02,   9.21658763e-04, ...,
            5.52073841e-01,   8.00000046e-01,   5.89861612e-01],
         [  2.94930804e-02,   1.50230378e-01,   2.53456402e-01, ...,
            7.04147540e-01,   9.28110618e-01,   5.67741798e-01],
         [  1.15207345e-01,   4.10138150e-01,   6.69124504e-01, ...,
            4.34101274e-01,   7.32718715e-01,   4.70967626e-01],
         [  9.49308525e-02,   5.93548242e-01,   8.99539198e-01, ...,
            1.25345592e-01,   3.12442321e-01,   2.28571373e-01]]],


       [[[  6.19354932e-01,   3.01382416e-01,   2.76497629e-03, ...,
            9.21658763e-04,   2.16589809e-01,   7.90783463e-01],
         [  6.66354589e-01,   2.75575967e-01,   9.21658763e-04, ...,
            9.21658763e-04,   3.12447255e-01,   8.11059957e-01],
         [  7.46543840e-01,   2.50691184e-01,   2.58064454e-02, ...,
            9.21658763e-04,   3.58530193e-01,   8.51612939e-01],
         [  6.96774267e-01,   1.45622083e-01,   1.31797203e-01, ...,
            3.68663494e-03,   3.03230668e-01,   8.24884835e-01],
         [  5.41013694e-01,   1.23502274e-01,   3.42861994e-01, ...,
            3.68663494e-03,   1.50230378e-01,   5.32723702e-01],
         [  3.04147392e-01,   1.02304123e-01,   4.17516357e-01, ...,
            1.17972322e-01,   7.55760186e-02,   2.77419288e-01]],

        [[  3.28110765e-01,   2.80184262e-01,   5.62211846e-02, ...,
            9.21658763e-04,   1.10599052e-01,   7.18894080e-01],
         [  4.08295074e-01,   2.21198103e-01,   2.58064421e-02, ...,
            9.21658763e-04,   2.88474498e-01,   8.36866399e-01],
         [  5.95391801e-01,   1.91705020e-01,   9.21658763e-04, ...,
            9.21658763e-04,   4.66359576e-01,   9.64976967e-01],
         [  6.41474739e-01,   1.69585212e-01,   2.58064454e-02, ...,
            9.21658763e-04,   5.09677538e-01,   8.70967773e-01],
         [  5.95391561e-01,   1.72350187e-01,   1.29027290e-01, ...,
            9.21658763e-04,   4.62677636e-01,   8.50691278e-01],
         [  4.89400803e-01,   1.22580616e-01,   3.39170423e-01, ...,
            9.21658763e-04,   2.27649715e-01,   6.18433030e-01]],

        [[  3.22580566e-02,   5.43778670e-02,   8.47926030e-02, ...,
            9.21658763e-04,   2.94930804e-02,   5.35479047e-01],
         [  8.94008999e-02,   1.68663550e-01,   2.76497629e-03, ...,
            9.21658763e-04,   5.43778669e-02,   7.66820333e-01],
         [  2.45161231e-01,   8.57142650e-02,   9.21658763e-04, ...,
            9.21658763e-04,   2.07368527e-01,   8.27649811e-01],
         [  4.01843463e-01,   1.13364028e-01,   9.21658763e-04, ...,
            9.21658763e-04,   3.81566970e-01,   9.25345638e-01],
         [  5.33640669e-01,   5.80645021e-02,   2.58064454e-02, ...,
            2.58064455e-02,   4.58986306e-01,   9.24423982e-01],
         [  5.11520614e-01,   1.43778765e-01,   1.25345592e-01, ...,
            2.58064454e-02,   4.05534796e-01,   8.00004743e-01]],

        [[  9.21658763e-04,   5.43778638e-02,   1.12442366e-01, ...,
            9.21658763e-04,   9.21658763e-04,   2.26728054e-01],
         [  2.94930804e-02,   9.21658763e-04,   3.13363980e-02, ...,
            9.21658763e-04,   9.21658763e-04,   4.52529756e-01],
         [  7.92626537e-02,   5.80645021e-02,   9.21658763e-04, ...,
            2.58064455e-02,   7.55762604e-02,   6.77419431e-01],
         [  1.86175312e-01,   5.71428433e-02,   9.21658763e-04, ...,
            5.06912321e-02,   2.24884980e-01,   8.00000052e-01],
         [  3.17972513e-01,   2.94930804e-02,   9.21658763e-04, ...,
            1.00460805e-01,   4.27649908e-01,   9.52995403e-01],
         [  4.06451754e-01,   2.94930804e-02,   7.55710820e-02, ...,
            1.00460805e-01,   5.02304026e-01,   8.42396352e-01]],

        [[  9.21658763e-04,   2.58064454e-02,   1.64976915e-01, ...,
            9.21658763e-04,   9.21658763e-04,   8.20276301e-02],
         [  9.21658763e-04,   9.21658763e-04,   5.99078196e-02, ...,
            9.21658763e-04,   9.21658763e-04,   2.39631278e-01],
         [  2.58064452e-02,   9.21658763e-04,   9.21658763e-04, ...,
            2.58064452e-02,   5.06912321e-02,   4.42396448e-01],
         [  5.06914738e-02,   2.94930804e-02,   9.21658763e-04, ...,
            7.55760186e-02,   1.75115165e-01,   7.25345689e-01],
         [  1.00461047e-01,   9.21658763e-04,   9.21658763e-04, ...,
            1.25345592e-01,   3.49308671e-01,   7.67741992e-01],
         [  2.14746734e-01,   2.94930804e-02,   2.58064454e-02, ...,
            1.75115407e-01,   4.98617391e-01,   8.70967776e-01]],

        [[  9.21658763e-04,   5.43778670e-02,   1.67741895e-01, ...,
            9.21658763e-04,   9.21658763e-04,   5.43778669e-02],
         [  9.21658763e-04,   9.21658763e-04,   8.47926030e-02, ...,
            9.21658763e-04,   9.21658763e-04,   5.06912319e-02],
         [  9.21658763e-04,   9.21658763e-04,   9.21658763e-04, ...,
            9.21658763e-04,   5.06912320e-02,   2.32253313e-01],
         [  2.58066871e-02,   9.21658763e-04,   9.21658763e-04, ...,
            7.55762602e-02,   1.50225442e-01,   4.09216733e-01],
         [  2.58064454e-02,   9.21658763e-04,   9.21658763e-04, ...,
            1.50235557e-01,   3.24424127e-01,   5.83410239e-01],
         [  7.55762605e-02,   9.21658763e-04,   9.21658763e-04, ...,
            2.00000193e-01,   4.73732846e-01,   7.61290380e-01]]],


       [[[  6.56216346e-01,   5.90778572e-01,   1.48387061e-01, ...,
            5.52995247e-03,   9.21658763e-04,   3.83410046e-01],
         [  7.08755829e-01,   3.59447159e-01,   1.17972322e-01, ...,
            3.68663494e-03,   9.21658763e-04,   5.29953789e-01],
         [  6.26728201e-01,   4.53456111e-01,   8.75575825e-02, ...,
            9.21658763e-04,   2.58064454e-02,   4.83871093e-01],
         [  7.03225875e-01,   2.78341188e-01,   2.94930804e-02, ...,
            9.21658763e-04,   5.06912321e-02,   6.58064602e-01],
         [  6.43318062e-01,   3.51152227e-01,   2.94930804e-02, ...,
            9.21658763e-04,   1.50230378e-01,   6.76497774e-01],
         [  5.37327301e-01,   1.67742137e-01,   2.58064454e-02, ...,
            9.21658763e-04,   1.99999952e-01,   7.01382319e-01]],

        [[  4.02765124e-01,   3.82488628e-01,   2.03686583e-01, ...,
            3.68663494e-03,   9.21658763e-04,   3.63128616e-01],
         [  3.75110419e-01,   3.57603842e-01,   1.16129004e-01, ...,
            9.21658763e-04,   9.21658763e-04,   2.85709522e-01],
         [  2.93082792e-01,   1.74193745e-01,   8.84792412e-02, ...,
            9.21658763e-04,   2.58064454e-02,   3.56682183e-01],
         [  3.39165730e-01,   1.62211942e-01,   2.94930804e-02, ...,
            9.21658763e-04,   7.55760186e-02,   3.77880335e-01],
         [  2.82022887e-01,   5.71430850e-02,   2.94930804e-02, ...,
            9.21658763e-04,   1.50230378e-01,   4.98617633e-01],
         [  3.03221038e-01,   9.21900534e-04,   9.21658763e-04, ...,
            7.55760186e-02,   1.75115165e-01,   5.48387209e-01]],

        [[  1.47465402e-01,   3.01382657e-01,   1.11520707e-01, ...,
            9.21658763e-04,   9.21658763e-04,   8.29495304e-02],
         [  5.99080613e-02,   1.21658953e-01,   5.80645021e-02, ...,
            9.21658763e-04,   9.21658763e-04,   1.53917255e-01],
         [  9.21900534e-04,   3.41013741e-02,   2.94930804e-02, ...,
            9.21658763e-04,   9.21658763e-04,   1.75110470e-01],
         [  2.94930804e-02,   3.68663494e-03,   9.21658763e-04, ...,
            9.21658763e-04,   2.58064452e-02,   2.00000194e-01],
         [  1.00461047e-01,   9.21658763e-04,   9.21658763e-04, ...,
            7.55760186e-02,   5.06912319e-02,   3.74193700e-01],
         [  1.75115407e-01,   9.21900534e-04,   9.21658763e-04, ...,
            1.75120102e-01,   1.00461047e-01,   4.48848060e-01]],

        [[  3.22580566e-02,   3.41013709e-02,   7.92626504e-02, ...,
            9.21658763e-04,   9.21658763e-04,   9.21658763e-04],
         [  2.94930804e-02,   3.68663494e-03,   2.58064454e-02, ...,
            2.58064454e-02,   9.21658763e-04,   9.21658763e-04],
         [  9.21658763e-04,   3.68663494e-03,   9.21658763e-04, ...,
            2.58064454e-02,   9.21658763e-04,   5.06914738e-02],
         [  9.21658763e-04,   9.21658763e-04,   9.21658763e-04, ...,
            1.00460805e-01,   9.21658763e-04,   1.25340655e-01],
         [  9.21658763e-04,   9.21658763e-04,   9.21658763e-04, ...,
            2.24889675e-01,   9.21658763e-04,   2.24879802e-01],
         [  2.58064452e-02,   9.21658763e-04,   9.21658763e-04, ...,
            3.49308671e-01,   7.55762604e-02,   3.24423885e-01]],

        [[  3.13363980e-02,   9.21658763e-04,   1.04147437e-01, ...,
            1.00460805e-01,   9.21658763e-04,   9.21658763e-04],
         [  9.21658763e-04,   9.21658763e-04,   5.06912320e-02, ...,
            1.25345592e-01,   9.21658763e-04,   9.21658763e-04],
         [  9.21658763e-04,   9.21658763e-04,   2.58064454e-02, ...,
            2.00004888e-01,   9.21658763e-04,   9.21658763e-04],
         [  9.21658763e-04,   9.21658763e-04,   9.21658763e-04, ...,
            2.49774462e-01,   9.21658763e-04,   2.58064452e-02],
         [  9.21658763e-04,   9.21658763e-04,   9.21658763e-04, ...,
            3.99078245e-01,   9.21658763e-04,   7.55760185e-02],
         [  9.21658763e-04,   9.21658763e-04,   9.21658763e-04, ...,
            4.48847818e-01,   5.06912320e-02,   1.25340897e-01]],

        [[  8.75575792e-02,   9.21658763e-04,   7.55760186e-02, ...,
            1.50235315e-01,   2.76497629e-03,   5.99078196e-02],
         [  3.13363980e-02,   9.21658763e-04,   5.06912320e-02, ...,
            2.99544035e-01,   9.21658763e-04,   2.76497629e-03],
         [  2.76497629e-03,   9.21658763e-04,   2.58064454e-02, ...,
            3.24423885e-01,   9.21658763e-04,   9.21658763e-04],
         [  9.21658763e-04,   9.21658763e-04,   9.21658763e-04, ...,
            3.99078245e-01,   9.21658763e-04,   9.21658763e-04],
         [  9.21658763e-04,   2.58064454e-02,   9.21658763e-04, ...,
            4.98617391e-01,   9.21658763e-04,   9.21658763e-04],
         [  9.21658763e-04,   1.00460805e-01,   9.21658763e-04, ...,
            4.98617394e-01,   2.58064454e-02,   2.58066871e-02]]]]), 'weights': None, 'bkg_probability': 0.15983953983787644, 'num_parts': 10, 'name': 'moduloShifting_Rotation_Parts_layer'}], 'name': 'parts-net'}

In [4]:
print(patches_original.shape)
gr.images(patches_original[:100,0,:,:])


(100000, 8, 12, 12)

In [ ]:
import pnet

print(patches_original.shape)
print(patches.shape)
patches = patches[:trainingDataNum]
print(patches.shape,shiftRotationLayer._parts.shape)
#extractedFeature = shiftRotationLayer.extract_without_edges(patches.reshape((trainingDataNum * num_rot, secondLayerShape, secondLayerShape, 8)))[0]
patches = np.array(patches, dtype = np.uint8)
extractedFeature = shiftRotationLayer.extract_no_edge(patches.reshape((trainingDataNum * num_rot, secondLayerShape, secondLayerShape, 8)))
print(extractedFeature.shape)

In [6]:
print(extractedFeature.shape)


(7, 7, 1)

In [ ]:
print(extractedFeature.reshape(trainingDataNum,8,7,7,1)[:20,:,2,2,0])
permutation = np.empty((num_rot,num_rot * codeShape * codeShape),np.int_)
for a in range(num_rot):
    if a == 0:
        permutation[a] = np.arange(num_rot * codeShape * codeShape)
    else:
        permutation[a] = np.roll(permutation[a-1], codeShape * codeShape)
print(permutation)

originalPartsPermutation = np.empty((num_rot,num_rot * secondLayerShape * secondLayerShape),np.int_)
for a in range(num_rot):
    if a == 0:
        originalPartsPermutation[a] = np.arange(num_rot * secondLayerShape * secondLayerShape)
    else:
        originalPartsPermutation[a] = np.roll(originalPartsPermutation[a-1], secondLayerShape * secondLayerShape)
print(originalPartsPermutation)


patches_original = patches_original.reshape(trainingDataNum, -1)
extractedFeature = extractedFeature.reshape(trainingDataNum,-1)

for i in range(trainingDataNum):
    centerCode = extractedFeature[i].reshape(num_rot,codeShape,codeShape)[0,(codeShape - 1)/2, (codeShape - 1)/2]
    #print(centerCode)
    if centerCode == -1:
        continue
    if 0:
        permutationRot = -1
        for j in range(num_rot):
            if centerCode[j]%num_rot == 0:
                permutationRot = j
                break
        if(permutationRot == -1):
            break
    else:
        permutationRot = centerCode%4
    extractedFeature[i] = extractedFeature[i,permutation[permutationRot]]
    extractedFeature[i,int((codeShape * codeShape - 1)/2)] = centerCode - permutationRot
    #print(centerCode,permutationRot, extractedFeature[i].reshape(num_rot,codeShape,codeShape)[0, (codeShape - 1)/2, (codeShape -1) / 2])
    patches_original[i] = patches_original[i, originalPartsPermutation[permutationRot]]

partsRegion = [[] for x in range(int(numParts))]
originalPartsList = [[] for x in range(int(numParts))]
for i in range(trainingDataNum):
    centerCode = extractedFeature[i].reshape(num_rot,codeShape,codeShape)[0,(codeShape - 1)/2, (codeShape - 1)/2]
    if centerCode != -1:
        if(centerCode%num_rot!=0):
            print('what')
        partsGrid = np.array([partsPool(extractedFeature[i].reshape(num_rot,codeShape,codeShape)[j,:,:],numParts*num_rot) for j in range(num_rot)])
        partsRegion[centerCode//num_rot].append(partsGrid)
        originalPartsList[centerCode//num_rot].append(patches_original[i].reshape(num_rot, secondLayerShape,secondLayerShape))
originalPartsList = np.array(originalPartsList)
for i in range(numParts):
    print(len(partsRegion[i]))


k = np.zeros(numParts * num_rot)
for i in range(trainingDataNum):
    for j in extractedFeature[i]:
        if j!=-1:
            k[j]+=1
numSecondLayerParts = 10

print(k)
secondLayerPermutation = np.empty((num_rot, num_rot * num_rot * numParts), dtype = np.int_)
for a in range(num_rot):
    if a == 0:
        secondLayerPermutation[a] = np.arange(num_rot * num_rot * numParts)
    else:
        secondLayerPermutation[a] = np.roll(secondLayerPermutation[a - 1], num_rot * num_rot * numParts)

from pnet.bernoulli import em
superParts = [em(np.array(partsRegion[i]).reshape(len(partsRegion[i]),-1),numSecondLayerParts,permutation=secondLayerPermutation,verbose=True) for i in range(numParts)]
allVisParts = []
for i in range(numParts):
    print(superParts[i][3].shape)
    comps = np.array(superParts[i][3])
    raw_originals = np.array(originalPartsList[i])
    print(raw_originals.shape, comps.shape)
    visParts = np.asarray([raw_originals[comps[:,0]==k,(comps[comps[:,0]==k][:,1]-1)%num_rot].mean(0) for k in range(numParts)])
    allVisParts.append(visParts)

gr.images(np.array(originalPartsList[0])[:20,0],show=False,zero_to_one=False, vmin=0,vmax=1,fileName = 'test.png')
print(superParts[0][3][:20,:])

In [13]:
print(shiftRotationLayer._visparts.shape)
"""
Visualize the SuperParts
"""
settings = {'interpolation':'nearest','cmap':plot.cm.gray,}
settings['vmin'] = 0
settings['vmax'] = 1
plotData = np.ones(((2 + secondLayerShape)*100+2,(2+secondLayerShape)*(numSecondLayerParts + 1)+2))*0.8
visualShiftParts = 0
if 0:
    allPartsPlot = np.zeros((20,numSecondLayerParts + 1,12,12))
    gr.images(partsPlot.reshape(numParts,6,6),zero_to_one=False,vmin = 0, vmax = 1)
    allPartsPlot[:,0] = 0.5
    allPartsPlot[:,0,3:9,3:9] = partsPlot[20:40]
    allPartsPlot[:,1:,:,:] = allPartsLayerImg[20:40]
    gr.images(allPartsPlot.reshape(20 * (numSecondLayerParts + 1),12,12),zero_to_one=False, vmin = 0, vmax =1)
elif 1:
    for i in range(numSecondLayerParts + 1):
        for j in range(numParts):
            if i == 0:
                plotData[5 + j * (2 + secondLayerShape):5+firstLayerShape + j * (2 + secondLayerShape), 5 + i * (2 + secondLayerShape): 5+firstLayerShape + i * (2 + secondLayerShape)] = shiftRotationLayer._visparts[j+visualShiftParts]
            else:
                plotData[2 + j * (2 + secondLayerShape):2 + secondLayerShape+ j * (2 + secondLayerShape),2 + i * (2 + secondLayerShape): 2+ secondLayerShape + i * (2 + secondLayerShape)] = allVisParts[j+visualShiftParts][i-1]
    plot.figure(figsize=(10,40))
    plot.axis('off')
    plot.imshow(plotData, **settings)
    plot.savefig('originalExParts1.pdf',format='pdf',dpi=900)
else:
    pass


(10, 6, 6)

In [ ]: