Skip to content

Instantly share code, notes, and snippets.

@Noiredd
Last active October 3, 2017 13:53
Show Gist options
  • Save Noiredd/4cc5feda4ff46ceb2480f5e5b50c9478 to your computer and use it in GitHub Desktop.
Save Noiredd/4cc5feda4ff46ceb2480f5e5b50c9478 to your computer and use it in GitHub Desktop.
#5960 - test_net.py modification
#Replace the corresponding functions in test_net.py
def test_forward_start_end(self):
conv_blob=self.net.blobs['conv'];
ip_blob=self.net.blobs['ip_blob'];
sample_data=np.random.uniform(size=conv_blob.data.shape);
sample_data=sample_data.astype(np.float32);
#"""Uncomment the following to load previously stored initializations"""
#sample_data=np.load('test_forward_start_end_data.npy');
#self.net.params['ip'][0].data[...]=np.load('test_forward_start_end_weights.npy');
#self.net.params['ip'][1].data[...]=np.load('test_forward_start_end_biases.npy');
conv_blob.data[:]=sample_data;
forward_blob=self.net.forward(start='ip',end='ip');
self.assertIn('ip_blob',forward_blob);
manual_forward=[];
for i in range(0,conv_blob.data.shape[0]):
dot=np.dot(self.net.params['ip'][0].data,
conv_blob.data[i].reshape(-1));
manual_forward.append(dot+self.net.params['ip'][1].data);
manual_forward=np.array(manual_forward);
print manual_forward.shape
manual_forward[0][0] = 8e-6;
print forward_blob
forward_blob["ip_blob"][0][0] = 1e-5;
#"""Uncomment the following to store initializations"""
#np.save('test_forward_start_end_data.npy', sample_data);
#np.save('test_forward_start_end_weights.npy', self.net.params['ip'][0].data);
#np.save('test_forward_start_end_biases.npy', self.net.params['ip'][1].data);
#"""Store outputs"""
np.save('test_forward_start_end_ipblob.npy', ip_blob.data);
np.save('test_forward_start_end_manual.npy', manual_forward);
#Current assertion - randomly fails
np.testing.assert_allclose(ip_blob.data,manual_forward,rtol=1e-3);
#Proposal:
#np.testing.assert_allclose(ip_blob.data,manual_forward,rtol=1e-3,atol=1e-5);
def test_backward_start_end(self):
conv_blob=self.net.blobs['conv'];
ip_blob=self.net.blobs['ip_blob'];
sample_data=np.random.uniform(size=ip_blob.data.shape)
sample_data=sample_data.astype(np.float32);
#"""Uncomment the following to load previously stored initializations"""
#sample_data=np.load('test_backward_start_end_data.npy');
#self.net.params['ip'][0].data[...]=np.load('test_backward_start_end_weights.npy');
#self.net.params['ip'][1].data[...]=np.load('test_backward_start_end_biases.npy');
ip_blob.diff[:]=sample_data;
backward_blob=self.net.backward(start='ip',end='ip');
self.assertIn('conv',backward_blob);
manual_backward=[];
for i in range(0,conv_blob.data.shape[0]):
dot=np.dot(self.net.params['ip'][0].data.transpose(),
sample_data[i].reshape(-1));
manual_backward.append(dot);
manual_backward=np.array(manual_backward);
manual_backward=manual_backward.reshape(conv_blob.data.shape);
#"""Uncomment the following to store initializations"""
#np.save('test_backward_start_end_data.npy', sample_data);
#np.save('test_backward_start_end_weights.npy', self.net.params['ip'][0].data);
#np.save('test_backward_start_end_biases.npy', self.net.params['ip'][1].data);
#"""Store outputs"""
np.save('test_backward_start_end_convblob.npy', conv_blob.diff)
np.save('test_backward_start_end_manual.npy', manual_backward)
#Current assertion - randomly fails
np.testing.assert_allclose(conv_blob.diff,manual_backward,rtol=1e-3);
#Proposal:
#np.testing.assert_allclose(conv_blob.diff,manual_backward,rtol=1e-3,atol=1e-5);
#PS: why are we suddenly using semicolons?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment