Created
February 27, 2018 02:55
-
-
Save jnschaeffer/fb16b2117ba6d837601074e764d44323 to your computer and use it in GitHub Desktop.
Caffe OpenCL failing test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"""This script is made from pieces of the example in examples/00-classification.ipynb""" | |
import caffe | |
import os | |
import numpy as np | |
# This should be run from the caffe distribution root. | |
caffe_root = './' | |
model_def = caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt' | |
model_weights = caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel' | |
net = caffe.Net(model_def, # defines the structure of the model | |
model_weights, # contains the trained weights | |
caffe.TEST) # use test mode (e.g., don't perform dropout) | |
# load the mean ImageNet image (as distributed with Caffe) for subtraction | |
mu = np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy') | |
mu = mu.mean(1).mean(1) # average over pixels to obtain the mean (BGR) pixel values | |
print 'mean-subtracted values:', zip('BGR', mu) | |
# create transformer for the input called 'data' | |
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape}) | |
transformer.set_transpose('data', (2,0,1)) # move image channels to outermost dimension | |
transformer.set_mean('data', mu) # subtract the dataset-mean value in each channel | |
transformer.set_raw_scale('data', 255) # rescale from [0, 1] to [0, 255] | |
transformer.set_channel_swap('data', (2,1,0)) # swap channels from RGB to BGR | |
# set the size of the input (we can skip this if we're happy | |
# with the default; we can also change it later, e.g., for different batch sizes) | |
net.blobs['data'].reshape(1, # batch size | |
3, # 3-channel (BGR) images | |
227, 227) # image size is 227x227 | |
image = caffe.io.load_image(caffe_root + 'examples/images/cat.jpg') | |
transformed_image = transformer.preprocess('data', image) | |
# copy the image data into the memory allocated for the net | |
net.blobs['data'].data[...] = transformed_image | |
caffe.set_device(0) | |
caffe.set_mode_gpu() | |
### perform classification | |
# Crashes here with message: | |
# ViennaCL: FATAL ERROR: Kernel start failed for 'fill_float'. | |
# ViennaCL: Smaller work sizes could not solve the problem. | |
# Crashes with a different kernel failure elswhere in the example. | |
output = net.forward() | |
output_prob = output['prob'][0] # the output probability vector for the first image in the batch | |
print 'predicted class is:', output_prob.argmax() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment