task9 init

This commit is contained in:
pranavbrkr 2023-10-12 16:41:06 -07:00
parent 2ca88df5be
commit c135fdc390
4 changed files with 288 additions and 109 deletions

File diff suppressed because one or more lines are too long

View File

@ -2,9 +2,18 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 1, "execution_count": 12,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n"
]
}
],
"source": [ "source": [
"%load_ext autoreload\n", "%load_ext autoreload\n",
"%autoreload 2" "%autoreload 2"
@ -12,7 +21,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 2, "execution_count": 13,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -23,7 +32,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 14,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -32,124 +41,124 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": 15,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Applying svd on the fc_fd space to get 10 latent semantics (showing only top 10 image-weight pairs for each latent semantic)...\n", "Applying svd on the given similarity matrix to get 10 latent semantics (showing only top 10 image-weight pairs for each latent semantic)...\n",
"Latent semantic no. 0\n", "Latent semantic no. 0\n",
"Image_ID\t80\t-\tWeight\t0.2614097705550824\n", "Image_ID\t200\t-\tWeight\t0.0\n",
"Image_ID\t74\t-\tWeight\t0.255431983850539\n", "Image_ID\t198\t-\tWeight\t-0.004684806351746236\n",
"Image_ID\t72\t-\tWeight\t0.24329045773521019\n", "Image_ID\t196\t-\tWeight\t-0.007271577414375871\n",
"Image_ID\t76\t-\tWeight\t0.22867416408250565\n", "Image_ID\t194\t-\tWeight\t-0.011073051177514079\n",
"Image_ID\t38\t-\tWeight\t0.19933358228759127\n", "Image_ID\t192\t-\tWeight\t-0.011680371639188197\n",
"Image_ID\t70\t-\tWeight\t0.18697368408982706\n", "Image_ID\t188\t-\tWeight\t-0.014876024947438421\n",
"Image_ID\t78\t-\tWeight\t0.13796715203849405\n", "Image_ID\t186\t-\tWeight\t-0.017327189984007427\n",
"Image_ID\t130\t-\tWeight\t0.12802644225327572\n", "Image_ID\t190\t-\tWeight\t-0.021143262428570023\n",
"Image_ID\t128\t-\tWeight\t0.12766513481071043\n", "Image_ID\t182\t-\tWeight\t-0.026835375354998945\n",
"Image_ID\t116\t-\tWeight\t0.12432195172872901\n", "Image_ID\t180\t-\tWeight\t-0.030539133156424272\n",
"Latent semantic no. 1\n", "Latent semantic no. 1\n",
"Image_ID\t42\t-\tWeight\t0.24451953308549035\n", "Image_ID\t130\t-\tWeight\t0.21209688019072415\n",
"Image_ID\t104\t-\tWeight\t0.17513827022527176\n", "Image_ID\t138\t-\tWeight\t0.20392427070510372\n",
"Image_ID\t2\t-\tWeight\t0.17502495949250704\n", "Image_ID\t120\t-\tWeight\t0.1528415927574225\n",
"Image_ID\t0\t-\tWeight\t0.17209867451969002\n", "Image_ID\t132\t-\tWeight\t0.14995762877608315\n",
"Image_ID\t170\t-\tWeight\t0.16656363902027468\n", "Image_ID\t160\t-\tWeight\t0.1488052541453248\n",
"Image_ID\t96\t-\tWeight\t0.15318453472976815\n", "Image_ID\t136\t-\tWeight\t0.14309946283137032\n",
"Image_ID\t40\t-\tWeight\t0.1432149719665029\n", "Image_ID\t164\t-\tWeight\t0.1374261619484733\n",
"Image_ID\t44\t-\tWeight\t0.1429496131499582\n", "Image_ID\t140\t-\tWeight\t0.13528239495542024\n",
"Image_ID\t160\t-\tWeight\t0.13479710738132986\n", "Image_ID\t128\t-\tWeight\t0.12811923299406092\n",
"Image_ID\t6\t-\tWeight\t0.1264545662660414\n", "Image_ID\t152\t-\tWeight\t0.12752116772697258\n",
"Latent semantic no. 2\n", "Latent semantic no. 2\n",
"Image_ID\t86\t-\tWeight\t0.21244971577008848\n", "Image_ID\t4\t-\tWeight\t0.2518749001016952\n",
"Image_ID\t96\t-\tWeight\t0.19744514449239337\n", "Image_ID\t8\t-\tWeight\t0.24177133880298157\n",
"Image_ID\t90\t-\tWeight\t0.19463642108355275\n", "Image_ID\t58\t-\tWeight\t0.1467873881626323\n",
"Image_ID\t32\t-\tWeight\t0.18145091969843855\n", "Image_ID\t0\t-\tWeight\t0.1384139791414865\n",
"Image_ID\t42\t-\tWeight\t0.16316970985189788\n", "Image_ID\t56\t-\tWeight\t0.11818058158618501\n",
"Image_ID\t26\t-\tWeight\t0.15711519451212017\n", "Image_ID\t20\t-\tWeight\t0.1102967668802325\n",
"Image_ID\t184\t-\tWeight\t0.14991640994990046\n", "Image_ID\t84\t-\tWeight\t0.1044376029159064\n",
"Image_ID\t134\t-\tWeight\t0.1462330756631442\n", "Image_ID\t18\t-\tWeight\t0.10262843674760519\n",
"Image_ID\t40\t-\tWeight\t0.14437675159652016\n", "Image_ID\t138\t-\tWeight\t0.10181762652349924\n",
"Image_ID\t182\t-\tWeight\t0.1383518461119224\n", "Image_ID\t70\t-\tWeight\t0.10127861659022899\n",
"Latent semantic no. 3\n", "Latent semantic no. 3\n",
"Image_ID\t90\t-\tWeight\t0.1720078267722524\n", "Image_ID\t84\t-\tWeight\t0.16299489544466675\n",
"Image_ID\t156\t-\tWeight\t0.16000154385617743\n", "Image_ID\t94\t-\tWeight\t0.155336350677209\n",
"Image_ID\t158\t-\tWeight\t0.1512646317732056\n", "Image_ID\t70\t-\tWeight\t0.14011002627071287\n",
"Image_ID\t160\t-\tWeight\t0.14646801598350143\n", "Image_ID\t102\t-\tWeight\t0.13701247594788535\n",
"Image_ID\t152\t-\tWeight\t0.1464352560589073\n", "Image_ID\t88\t-\tWeight\t0.1320753872066342\n",
"Image_ID\t150\t-\tWeight\t0.14619374900432364\n", "Image_ID\t82\t-\tWeight\t0.1320716816148611\n",
"Image_ID\t30\t-\tWeight\t0.14143498327111978\n", "Image_ID\t86\t-\tWeight\t0.12902969925360877\n",
"Image_ID\t36\t-\tWeight\t0.14028252934190766\n", "Image_ID\t72\t-\tWeight\t0.12610296358207826\n",
"Image_ID\t92\t-\tWeight\t0.14010606099568526\n", "Image_ID\t92\t-\tWeight\t0.12596461453701044\n",
"Image_ID\t96\t-\tWeight\t0.12878454015856147\n", "Image_ID\t66\t-\tWeight\t0.12532841063277217\n",
"Latent semantic no. 4\n", "Latent semantic no. 4\n",
"Image_ID\t0\t-\tWeight\t0.1851068625752792\n", "Image_ID\t176\t-\tWeight\t0.17418620419170064\n",
"Image_ID\t68\t-\tWeight\t0.18233577289211206\n", "Image_ID\t184\t-\tWeight\t0.16284491366511475\n",
"Image_ID\t70\t-\tWeight\t0.17658848660973384\n", "Image_ID\t178\t-\tWeight\t0.15835141260945226\n",
"Image_ID\t2\t-\tWeight\t0.1740864069632969\n", "Image_ID\t182\t-\tWeight\t0.1563230190106094\n",
"Image_ID\t64\t-\tWeight\t0.1652208125636303\n", "Image_ID\t180\t-\tWeight\t0.14992527858819726\n",
"Image_ID\t144\t-\tWeight\t0.1473307832877541\n", "Image_ID\t170\t-\tWeight\t0.1461798073190985\n",
"Image_ID\t140\t-\tWeight\t0.13555748295430797\n", "Image_ID\t174\t-\tWeight\t0.13541698801645058\n",
"Image_ID\t142\t-\tWeight\t0.12823249250147356\n", "Image_ID\t166\t-\tWeight\t0.12423630035289784\n",
"Image_ID\t86\t-\tWeight\t0.12718092599165637\n", "Image_ID\t172\t-\tWeight\t0.1234361443074221\n",
"Image_ID\t76\t-\tWeight\t0.1252879989162334\n", "Image_ID\t52\t-\tWeight\t0.12074682250121946\n",
"Latent semantic no. 5\n", "Latent semantic no. 5\n",
"Image_ID\t38\t-\tWeight\t0.18831453133913492\n", "Image_ID\t184\t-\tWeight\t0.25060450796637307\n",
"Image_ID\t44\t-\tWeight\t0.17741038115946053\n", "Image_ID\t96\t-\tWeight\t0.19653319773940384\n",
"Image_ID\t42\t-\tWeight\t0.16444727858214978\n", "Image_ID\t4\t-\tWeight\t0.1927615510140044\n",
"Image_ID\t130\t-\tWeight\t0.15436113645002744\n", "Image_ID\t190\t-\tWeight\t0.1823467475920773\n",
"Image_ID\t40\t-\tWeight\t0.1536450181907607\n", "Image_ID\t104\t-\tWeight\t0.17232402315708764\n",
"Image_ID\t132\t-\tWeight\t0.14964910372393345\n", "Image_ID\t176\t-\tWeight\t0.15944267571419668\n",
"Image_ID\t46\t-\tWeight\t0.147369630386678\n", "Image_ID\t2\t-\tWeight\t0.15830010074390483\n",
"Image_ID\t36\t-\tWeight\t0.14003912645014002\n", "Image_ID\t180\t-\tWeight\t0.15710086389623582\n",
"Image_ID\t128\t-\tWeight\t0.13864439525825356\n", "Image_ID\t86\t-\tWeight\t0.1531972222034532\n",
"Image_ID\t138\t-\tWeight\t0.13770732538821512\n", "Image_ID\t178\t-\tWeight\t0.14864580852650564\n",
"Latent semantic no. 6\n", "Latent semantic no. 6\n",
"Image_ID\t114\t-\tWeight\t0.15664448468019831\n", "Image_ID\t160\t-\tWeight\t0.2664558477429268\n",
"Image_ID\t2\t-\tWeight\t0.15491061836983144\n", "Image_ID\t86\t-\tWeight\t0.22964178511691158\n",
"Image_ID\t0\t-\tWeight\t0.1530303208538504\n", "Image_ID\t4\t-\tWeight\t0.2027946708731003\n",
"Image_ID\t6\t-\tWeight\t0.15295162665264536\n", "Image_ID\t8\t-\tWeight\t0.17594388183949075\n",
"Image_ID\t106\t-\tWeight\t0.14505207452002586\n", "Image_ID\t96\t-\tWeight\t0.15932731178540344\n",
"Image_ID\t110\t-\tWeight\t0.14364619871330633\n", "Image_ID\t150\t-\tWeight\t0.1557669882841681\n",
"Image_ID\t104\t-\tWeight\t0.14360445482307752\n", "Image_ID\t42\t-\tWeight\t0.15015687757605228\n",
"Image_ID\t116\t-\tWeight\t0.14309751290704328\n", "Image_ID\t70\t-\tWeight\t0.14221366935133106\n",
"Image_ID\t108\t-\tWeight\t0.14103122187663494\n", "Image_ID\t166\t-\tWeight\t0.13822990110337333\n",
"Image_ID\t112\t-\tWeight\t0.13936814882577545\n", "Image_ID\t170\t-\tWeight\t0.136006921209686\n",
"Latent semantic no. 7\n", "Latent semantic no. 7\n",
"Image_ID\t158\t-\tWeight\t0.15332739573127638\n", "Image_ID\t0\t-\tWeight\t0.18579423291522054\n",
"Image_ID\t152\t-\tWeight\t0.15027095321242787\n", "Image_ID\t160\t-\tWeight\t0.15838043091994455\n",
"Image_ID\t2\t-\tWeight\t0.148228537938103\n", "Image_ID\t12\t-\tWeight\t0.1569899414230264\n",
"Image_ID\t0\t-\tWeight\t0.14693245027728857\n", "Image_ID\t16\t-\tWeight\t0.15348073631252238\n",
"Image_ID\t156\t-\tWeight\t0.1439438847861891\n", "Image_ID\t20\t-\tWeight\t0.14749435830520785\n",
"Image_ID\t8\t-\tWeight\t0.14356918947005834\n", "Image_ID\t18\t-\tWeight\t0.14710442040625207\n",
"Image_ID\t10\t-\tWeight\t0.1431162549061445\n", "Image_ID\t14\t-\tWeight\t0.14572307182896904\n",
"Image_ID\t6\t-\tWeight\t0.14277108702825383\n", "Image_ID\t2\t-\tWeight\t0.135886756644037\n",
"Image_ID\t150\t-\tWeight\t0.1424099571884803\n", "Image_ID\t158\t-\tWeight\t0.12716375063129493\n",
"Image_ID\t164\t-\tWeight\t0.13731169848767164\n", "Image_ID\t154\t-\tWeight\t0.11653475862758583\n",
"Latent semantic no. 8\n", "Latent semantic no. 8\n",
"Image_ID\t136\t-\tWeight\t0.14826723874051348\n", "Image_ID\t128\t-\tWeight\t0.20162255290912043\n",
"Image_ID\t142\t-\tWeight\t0.1444905135922577\n", "Image_ID\t64\t-\tWeight\t0.2013551710742827\n",
"Image_ID\t116\t-\tWeight\t0.14310970423245634\n", "Image_ID\t76\t-\tWeight\t0.19200691322367733\n",
"Image_ID\t132\t-\tWeight\t0.13967210710664973\n", "Image_ID\t68\t-\tWeight\t0.183262211696717\n",
"Image_ID\t152\t-\tWeight\t0.13699976834141417\n", "Image_ID\t2\t-\tWeight\t0.17626949463475755\n",
"Image_ID\t114\t-\tWeight\t0.13649814331495427\n", "Image_ID\t126\t-\tWeight\t0.17260073717551033\n",
"Image_ID\t138\t-\tWeight\t0.13624706512987708\n", "Image_ID\t130\t-\tWeight\t0.16679745247386799\n",
"Image_ID\t106\t-\tWeight\t0.13620952950667425\n", "Image_ID\t0\t-\tWeight\t0.15145696367688846\n",
"Image_ID\t110\t-\tWeight\t0.1346054901033104\n", "Image_ID\t80\t-\tWeight\t0.13382645234168947\n",
"Image_ID\t144\t-\tWeight\t0.13436573258693213\n", "Image_ID\t132\t-\tWeight\t0.12607547198838437\n",
"Latent semantic no. 9\n", "Latent semantic no. 9\n",
"Image_ID\t38\t-\tWeight\t0.15911686596038474\n", "Image_ID\t110\t-\tWeight\t0.2380313932091839\n",
"Image_ID\t2\t-\tWeight\t0.15207108925634513\n", "Image_ID\t126\t-\tWeight\t0.22284705922022288\n",
"Image_ID\t0\t-\tWeight\t0.15116756158498235\n", "Image_ID\t170\t-\tWeight\t0.20294066349000953\n",
"Image_ID\t6\t-\tWeight\t0.15009399187071035\n", "Image_ID\t58\t-\tWeight\t0.19271846291888434\n",
"Image_ID\t10\t-\tWeight\t0.14437025978168486\n", "Image_ID\t166\t-\tWeight\t0.16710379029940944\n",
"Image_ID\t4\t-\tWeight\t0.14315858315130434\n", "Image_ID\t118\t-\tWeight\t0.16159034411481996\n",
"Image_ID\t34\t-\tWeight\t0.14296451776950192\n", "Image_ID\t42\t-\tWeight\t0.1585043891315177\n",
"Image_ID\t22\t-\tWeight\t0.14272703151065388\n", "Image_ID\t120\t-\tWeight\t0.15529190621970054\n",
"Image_ID\t24\t-\tWeight\t0.14254462871698045\n", "Image_ID\t56\t-\tWeight\t0.1484578124120866\n",
"Image_ID\t20\t-\tWeight\t0.14096073579756538\n" "Image_ID\t160\t-\tWeight\t0.13578707023661948\n"
] ]
} }
], ],
@ -206,7 +215,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.10.5" "version": "3.11.4"
} }
}, },
"nbformat": 4, "nbformat": 4,

132
Phase 2/task_9.ipynb Normal file
View File

@ -0,0 +1,132 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"import os\n",
"from utils import *"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"selected_latent_space = valid_latent_spaces[\n",
" str(input(\"Enter latent space - one of \" + str(list(valid_latent_spaces.keys()))))\n",
"]\n",
"\n",
"selected_feature_model = valid_feature_models[\n",
" str(input(\"Enter feature model - one of \" + str(list(valid_feature_models.keys()))))\n",
"]\n",
"\n",
"k = int(input(\"Enter value of k: \"))\n",
"if k < 1:\n",
" raise ValueError(\"k should be a positive integer\")\n",
"\n",
"selected_dim_reduction_method = str(\n",
" input(\n",
" \"Enter dimensionality reduction method - one of \"\n",
" + str(list(valid_dim_reduction_methods.keys()))\n",
" )\n",
")\n",
"\n",
"label = int(input(\"Enter label: \"))\n",
"if label < 0 and label > 100:\n",
" raise ValueError(\"k should be between 0 and 100\")\n",
"\n",
"\n",
"match selected_latent_space:\n",
" case \"\":\n",
" if os.path.exists(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n",
" data = json.load(open(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n",
" else:\n",
" print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json does not exist\" )\n",
" case \"cp\":\n",
" if os.path.exists(f\"{selected_feature_model}-cp-{k}-semantics.json\"):\n",
" data = json.load(open(f\"{selected_feature_model}-cp-{k}-semantics.json\"))\n",
" else:\n",
" \n",
" print(f\"{selected_feature_model}-cp-{k}-semantics.json does not exist\" )\n",
" case _:\n",
" if os.path.exists(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n",
" data = json.load(open(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n",
" else:\n",
" print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json does not exist\" )\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(101, 10)\n",
"(10, 10)\n",
"(10, 101)\n"
]
}
],
"source": [
"match selected_latent_space:\n",
"\n",
" case \"label_sim\":\n",
"\n",
" extract_simila\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

View File

@ -358,6 +358,12 @@ valid_feature_models = {
"fc": "fc_fd", "fc": "fc_fd",
"resnet": "resnet_fd", "resnet": "resnet_fd",
} }
valid_latent_spaces = {
"ls1": "",
"ls2": "cp",
"ls3": "label_sim",
"ls4": "image_sim",
}
valid_distance_measures = { valid_distance_measures = {
"euclidean": euclidean_distance_measure, "euclidean": euclidean_distance_measure,
"cosine": cosine_distance_measure, "cosine": cosine_distance_measure,
@ -517,7 +523,7 @@ def calculate_label_representatives(fd_collection, label, feature_model):
"""Calculate representative feature vector of a label as the mean of all feature vectors under a feature model""" """Calculate representative feature vector of a label as the mean of all feature vectors under a feature model"""
label_fds = [ label_fds = [
img_fds[feature_model] # get the specific feature model's feature vector np.array(img_fds[feature_model]).flatten() # get the specific feature model's feature vector
for img_fds in fd_collection.find( for img_fds in fd_collection.find(
{"true_label": label} {"true_label": label}
) # repeat for all images ) # repeat for all images
@ -804,6 +810,37 @@ class KMeans:
return Y return Y
def svd(matrix, k):
# Step 1: Compute the covariance matrix
cov_matrix = np.dot(matrix.T, matrix)
# Step 2: Compute the eigenvalues and eigenvectors of the covariance matrix
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)
# Step 3: Sort the eigenvalues and corresponding eigenvectors
sort_indices = eigenvalues.argsort()[::-1]
eigenvalues = eigenvalues[sort_indices]
eigenvectors = eigenvectors[:, sort_indices]
# Step 4: Compute the singular values and the left and right singular vectors
singular_values = np.sqrt(eigenvalues)
left_singular_vectors = np.dot(matrix, eigenvectors)
right_singular_vectors = eigenvectors
# Step 5: Normalize the singular vectors
for i in range(left_singular_vectors.shape[1]):
left_singular_vectors[:, i] /= singular_values[i]
for i in range(right_singular_vectors.shape[1]):
right_singular_vectors[:, i] /= singular_values[i]
# Keep only the top k singular values and their corresponding vectors
singular_values = singular_values[:k]
left_singular_vectors = left_singular_vectors[:, :k]
right_singular_vectors = right_singular_vectors[:, :k]
return left_singular_vectors, np.diag(singular_values), right_singular_vectors.T
def extract_latent_semantics( def extract_latent_semantics(
fd_collection, fd_collection,
k, k,
@ -861,7 +898,7 @@ def extract_latent_semantics(
# singular value decomposition # singular value decomposition
# sparse version of SVD to get only k singular values # sparse version of SVD to get only k singular values
case 1: case 1:
U, S, V_T = svds(feature_vectors, k=k) U, S, V_T = svd(feature_vectors, k=k)
all_latent_semantics = { all_latent_semantics = {
"image-semantic": U.tolist(), "image-semantic": U.tolist(),