import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
%matplotlib inline
caffe_root = '/home/max/caffe-master/'
home = '/home/max/myPython/my_net_sum/'
import sys
sys.path.insert(0, caffe_root + 'python')
import caffe
# run scripts from caffe root
import os
os.chdir(caffe_root)
caffe.set_mode_cpu()
#Определим модель нейронной сети
model_def = home + 'net.prototxt'
#Загрузка нейронной сети
net = caffe.Net(model_def, caffe.TEST)
#Посмотрим параметры многомерных массивов для каждого слоя сети
[(k, v.data.shape) for k, v in net.blobs.items()]
#Load the solver
solver = caffe.SGDSolver(home + 'solver.prototxt')
#dir(solver)
#Посмотрим параметры многомерных массивов для градиентов слоев
[(k, v[0].data.shape, v[1].data.shape) for k, v in net.params.items()]
#Посмотрим параметры многомерных массивов для каждого слоя сети
[(k, v.data.shape) for k, v in solver.net.blobs.items()]
#that is a forward propagation, a backward propagation
#and the update of the net params given the gradients
# (update of the net.params[k][j].data)
#solver.step(1)
# net forward
#solver.net.forward()
#solver solver
solver.solve()
# test net (there can be more than one)
#solver.test_nets[0].forward()
#save net model
#solver.net.save(home+'mymodel2.caffemodel')
#solver.step(1)
#solver.net.forward()
#print 'net.blobs label =',net.blobs['label'].data[...]
#contains the blobs
print 'blobs data =',solver.net.blobs['data'].data[...]
print 'blobs label =',solver.net.blobs['label'].data[...]
print 'blobs ip0 =',solver.net.blobs['ip0'].data[...]
#print 'blobs ip1 =',solver.net.blobs['ip1'].data[...]
print 'blobs loss =',solver.net.blobs['loss'].data[...]
#print 'blobs accuracy =',solver.net.blobs['accuracy'].data[...]
#contains the weight parameters
print 'params =',solver.net.params['ip0'][0].data[...]
#contains the bias parameters
print 'params =',solver.net.params['ip0'][1].data[...]
#the gradients (computation of the net.blobs[k].diff
#and net.params[k][j].diff from the loss layer until input layer)
print 'diff =',solver.net.params['ip0'][0].diff
print 'diff =',solver.net.params['ip0'][1].diff
#train on range step
for i in range(5000):
solver.step(1)
print 'blobs loss =',solver.net.blobs['loss'].data[...]
print 'params =',solver.net.params['ip0'][0].data[...]
#save net
net.save(home+'mymodel.caffemodel')
#Drawing net
home_img=home+'my_net.png'
model_def = home+'net.prototxt'
!/home/max/caffe-master/python/draw_net.py $model_def $home_img
im = plt.imshow(np.flipud(plt.imread(home_img)), origin='lower')
plt.show()
!shotwell $home_img
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
%matplotlib inline
caffe_root = '/home/max/caffe-master/'
home = '/home/max/myPython/my_net_sum/'
import sys
sys.path.insert(0, caffe_root + 'python')
import caffe
# run scripts from caffe root
import os
os.chdir(caffe_root)
caffe.set_mode_cpu()
#Определим модель нейронной сети
model_def2 = home + 'net2.prototxt'
#load the model
net = caffe.Net(model_def2, home+'mymodel.caffemodel', caffe.TEST)
#contains the blobs
print 'blobs data =',net.blobs['data'].data[...]
print 'blobs ip0 =',net.blobs['ip0'].data[...]
#contains the weight parameters
print 'params =',net.params['ip0'][0].data[...]
#contains the bias parameters
print 'params =',net.params['ip0'][1].data[...]
#input data
l0 = input ("l0=")
l1 = input ("l1=")
#Установка data blob
net.blobs['data'].data[...] = [[[[ l0,l1]]]]
#compute
out = net.forward()
print 'blobs data =',net.blobs['data'].data[...]
#predicted predicted class
print 'ip0 = ',out['ip0']
#print 'accuracy = ',out['accuracy'].argmax()