Load Tensor and calculate distance
Browse files- s4-calculate-distance.py +56 -0
s4-calculate-distance.py
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import numpy as np
|
| 2 |
+
from numpy.linalg import norm
|
| 3 |
+
import torch
|
| 4 |
+
|
| 5 |
+
url1='http://farm3.staticflickr.com/2519/4126738647_cc436c111b_z.jpg'
|
| 6 |
+
cap1='A motorcycle sits parked across from a herd of livestock'
|
| 7 |
+
|
| 8 |
+
url2='http://farm3.staticflickr.com/2046/2003879022_1b4b466d1d_z.jpg'
|
| 9 |
+
cap2='Motorcycle on platform to be worked on in garage'
|
| 10 |
+
|
| 11 |
+
url3='https://i.natgeofe.com/n/548467d8-c5f1-4551-9f58-6817a8d2c45e/NationalGeographic_2572187_3x2.jpg'
|
| 12 |
+
cap3='a cat laying down stretched out near a laptop'
|
| 13 |
+
|
| 14 |
+
img1 = {
|
| 15 |
+
'flickr_url': url1,
|
| 16 |
+
'caption': cap1,
|
| 17 |
+
'image_path' : './shared_data/motorcycle_1.jpg',
|
| 18 |
+
'tensor_path' : './shared_data/motorcycle_1'
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
img2 = {
|
| 22 |
+
'flickr_url': url2,
|
| 23 |
+
'caption': cap2,
|
| 24 |
+
'image_path' : './shared_data/motorcycle_2.jpg',
|
| 25 |
+
'tensor_path' : './shared_data/motorcycle_2'
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
img3 = {
|
| 29 |
+
'flickr_url' : url3,
|
| 30 |
+
'caption': cap3,
|
| 31 |
+
'image_path' : './shared_data/cat_1.jpg',
|
| 32 |
+
'tensor_path' : './shared_data/cat_1'
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
def load_tensor(path):
|
| 36 |
+
return torch.load(path)
|
| 37 |
+
|
| 38 |
+
def load_embeddings():
|
| 39 |
+
img1_tensor = load_tensor(img1['tensor_path'])
|
| 40 |
+
img2_tensor = load_tensor(img2['tensor_path'])
|
| 41 |
+
img3_tensor = load_tensor(img3['tensor_path'])
|
| 42 |
+
return np.array(img1_tensor), np.array(img2_tensor), np.array(img3_tensor)
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
def cosine_similarity(vec1, vec2):
|
| 46 |
+
similarity = np.dot(vec1,vec2)/(norm(vec1)*norm(vec2))
|
| 47 |
+
return similarity
|
| 48 |
+
|
| 49 |
+
def calculate_distance():
|
| 50 |
+
img1_tensor, img2_tensor, img3_tensor = load_embeddings()
|
| 51 |
+
similarity1 = cosine_similarity(img1_tensor, img2_tensor)
|
| 52 |
+
similarity2 = cosine_similarity(img1_tensor, img3_tensor)
|
| 53 |
+
similarity3 = cosine_similarity(img2_tensor, img3_tensor)
|
| 54 |
+
return similarity1, similarity2, similarity3
|
| 55 |
+
|
| 56 |
+
print(calculate_distance())
|