In [3]:
import os
import numpy as np
from pandas.io.parsers import read_csv
from sklearn.utils import shuffle

FTRAIN = 'new/train.csv'
FTEST = 'new/test.csv'

def load(test=False, cols=None):
    fname = FTEST if test else FTRAIN
    df = read_csv(os.path.expanduser(fname))  # load pandas dataframe

    df['Image'] = df['Image'].apply(lambda im: np.fromstring(im, sep=' '))

    if cols:
        df = df[list(cols) + ['Image']]

    print(df.count())  # prints the number of values for each column
    df = df.dropna()  # drop all rows that have missing values in them

    X = np.vstack(df['Image'].values) / 255.  # scale pixel values to [0, 1]
    X = X.astype(np.float32)

    if not test:  # only FTRAIN has any target columns
        y = df[df.columns[:-1]].values
        y = (y - 48) / 48  # scale target coordinates to [-1, 1]
        X, y = shuffle(X, y, random_state=2)  # shuffle train data
        y = y.astype(np.float32)
    else:
        y = None

    return X, y


X, y = load()


x        35
y        35
Image    35
dtype: int64

In [4]:
#тут буде частина кода, яка відповідає за оптимізацію слоїв
#і буде служити для відкладки потрібних параметрів виборок
print("output_num_units == {}; y.min == {:.3f}; y.max == {:.3f}".format(y.shape, y.min(), y.max()))


output_num_units == (35, 2); y.min == -0.187; y.max == 0.376

In [5]:
#Кусок коду, який відповідає за створення моделі картинки 
#в вид придатний для свертки
def load2d(test=False, cols=None):
    X, y = load(test=test)
    X = X.reshape(-1, 1, 96, 96)
    return X, y

In [8]:
#А тут код який загрузить нашу нейронну мережу
import cPickle as pickle
input = open('vova.pickle','rb')
net1=pickle.load(input)
input.close()


---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-8-f4dec87d16d4> in <module>()
      2 import cPickle as pickle
      3 input = open('vova.pickle','rb')
----> 4 net1=pickle.load(input)
      5 input.close()

/usr/local/lib/python2.7/dist-packages/nolearn/lasagne/__init__.py in <module>()
----> 1 from .handlers import (
      2     PrintLayerInfo,
      3     PrintLog,
      4     RememberBestWeights,
      5     SaveWeights,

/usr/local/lib/python2.7/dist-packages/nolearn/lasagne/handlers.py in <module>()
     10 
     11 from .._compat import pickle
---> 12 from .util import ansi
     13 from .util import get_conv_infos
     14 from .util import is_conv2d

/usr/local/lib/python2.7/dist-packages/nolearn/lasagne/util.py in <module>()
      2 from operator import mul
      3 
----> 4 from lasagne.layers import Layer
      5 from lasagne.layers import Conv2DLayer
      6 from lasagne.layers import MaxPool2DLayer

/usr/local/lib/python2.7/dist-packages/lasagne/__init__.py in <module>()
     15     del theano
     16 
---> 17 from . import nonlinearities
     18 from . import init
     19 from . import layers

ImportError: cannot import name nonlinearities

In [10]:
from graphviz import Digraph
import pydotplus
from nolearn.lasagne.visualize import draw_to_notebook
from nolearn.lasagne.visualize import plot_loss
from nolearn.lasagne.visualize import plot_conv_weights
from nolearn.lasagne.visualize import plot_conv_activity
from nolearn.lasagne.visualize import plot_occlusion
from nolearn.lasagne.visualize import plot_saliency

In [11]:
#потрібна  інсталяція graphviz sudo apt-get install graphviz
draw_to_notebook(net1)


Out[11]:

In [48]:
print("result")


result

In [12]:
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.cm as cm

In [13]:
plot_loss(net1)
plt.show()



In [41]:
def plot_sample(x, y, axis):
    img = x.reshape(96, 96)
    axis.imshow(img, cmap='gray', interpolation='none') #добавив інтерполяцію
    axis.scatter(y[0::2] * 48 + 48, y[1::2] * 48 + 48, marker='x', s=1)

X, _ = load2d(test=True)
y_pred = net1.predict(X)

fig = plt.figure(figsize=(24, 24)) #розміри фігури
fig.subplots_adjust(left=0, right=1, bottom=0, top=1, hspace=0.05, wspace=0.05)


for i in range(1):
    ax = fig.add_subplot(4, 4, i + 1)
    ax.set_title("Picture:") #заголовок
    ax.set_xticks([])        #рамка по х
    ax.set_yticks([])        # рамка по н
    plot_sample(X[i], y_pred[i], ax)


ImageId    1
Image      1
dtype: int64

In [44]:
fig.savefig('data.png')  
fig.show()

In [47]:
from PIL import Image
img = Image.open("data.png")
img2 = img.rotate(180)
img2.save("img2.png")

In [15]:
plot_conv_weights(net1.layers_[1], figsize=(4, 4))
plt.show()



In [27]:
plot_conv_activity(net1.layers_[1], X[0:2])
plt.show()



In [17]:
plot_saliency(net1, X[0:2]);
plt.show()