pycaffe共通APIレコード


Classification:Instant Recognition with caffe
公式のチュートリアルについて説明します
    import caffe#  caffe  
    caffe.set_mode_cpu()#  cpu  

    #          
    net=caffe.Net(model_def,#prototext    
                  model_weights,#caffemodel    
                  caffe.TEST)#  TEST  

    #  mean.npy  
    import numpy as np
    mu=np.load(file)
    mu.mean(1).mean(1)#    channel      BGR
    print 'mean-subtracted values:',zip('BGR',mu)

    #    caffe.io  ,          
    #       transform  ,  data      shape       
    transformer=caffe.io.Transformer({'data': net.blobs['data'].data.shape})
    transformer.set_transpose('data',(2,0,1))#227x227x3->3x227x227
    transformer.set_mean('data',mu)
    transformer.set_raw_scale('data',255)
    transformer.set_channel_swap('data',(2,1,0))# set_transpose()    
    #          
    #      
    net.blobs['data'].reshape(50,3,227,227)
    image=caffe.io.load_image(file)#    
    transformed_image=transformer.preprocess('data',image)#!!!    
    plt.imshow(image)

    #    
    #   data     
    net.blobs['data'].data[...]=transfarmed_image
    #      
    output=net.forward()
    #   batch              
    output_prob=output['prob'][0]#'prob'     
    print 'predicted class is: ',output_prob.argmax()

    #            
    for layer_name,blob in net.blobs.iteritems():
        print layer_name+'\t'+str(blob.data.shape)
    #           ,param[0] for weights, param[1] for biases
    for layer_name,param in net.params.iteritems():
        print layer_name+'\t'+str(param[0].data.shape,str(param[1].data.shape)
    #                     ,