{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"[Rapids](https://rapids.ai) is an open-source GPU accelerated Data Science and Machine Learning library, developed and mainatained by [Nvidia](https://www.nvidia.com). It is designed to be compatible with many existing CPU tools, such as Pandas, scikit-learn, numpy, etc. It enables **massive** acceleration of many data-science and machine learning tasks, oftentimes by a factor fo 100X, or more. \n\nIf you are interested in installing and running Rapids locally on your own machine, then you should [refer to the followong instructions](https://rapids.ai/start.html).\n\nThe purpose of this kernel is to take a look at dimensionality reduction that one gets with t-SNE algorithms. We will apply these algorithms to various image embeddings done with top pretrained Deep Learnign architectures.","metadata":{}},{"cell_type":"code","source":"import cudf, cuml\nimport pandas as pd\nimport numpy as np\nfrom cuml.manifold import TSNE\nimport matplotlib.pyplot as plt\n%matplotlib inline","metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","execution":{"iopub.status.busy":"2022-09-26T18:39:31.825674Z","iopub.execute_input":"2022-09-26T18:39:31.826426Z","iopub.status.idle":"2022-09-26T18:39:35.759082Z","shell.execute_reply.started":"2022-09-26T18:39:31.826340Z","shell.execute_reply":"2022-09-26T18:39:35.758057Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"target = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_1/target.npy')","metadata":{"execution":{"iopub.status.busy":"2022-09-26T18:39:38.412133Z","iopub.execute_input":"2022-09-26T18:39:38.412503Z","iopub.status.idle":"2022-09-26T18:39:38.429004Z","shell.execute_reply.started":"2022-09-26T18:39:38.412472Z","shell.execute_reply":"2022-09-26T18:39:38.428072Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_1/train_VGG16.npy')","metadata":{"execution":{"iopub.status.busy":"2022-09-26T18:39:39.350312Z","iopub.execute_input":"2022-09-26T18:39:39.350994Z","iopub.status.idle":"2022-09-26T18:39:42.889130Z","shell.execute_reply.started":"2022-09-26T18:39:39.350952Z","shell.execute_reply":"2022-09-26T18:39:42.888109Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{"execution":{"iopub.status.busy":"2022-09-26T18:39:43.712239Z","iopub.execute_input":"2022-09-26T18:39:43.713240Z","iopub.status.idle":"2022-09-26T18:39:52.857986Z","shell.execute_reply.started":"2022-09-26T18:39:43.713193Z","shell.execute_reply":"2022-09-26T18:39:52.856106Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{"execution":{"iopub.status.busy":"2022-09-26T18:41:10.525620Z","iopub.execute_input":"2022-09-26T18:41:10.526410Z","iopub.status.idle":"2022-09-26T18:41:11.244587Z","shell.execute_reply.started":"2022-09-26T18:41:10.526354Z","shell.execute_reply":"2022-09-26T18:41:11.243637Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"So this looks like a couple of fairly, albeit imperfectly, separated classses. Let's see what we can get with VGG19.","metadata":{}},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_1/train_VGG19.npy')","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:18:20.185401Z","iopub.execute_input":"2021-12-17T16:18:20.185725Z","iopub.status.idle":"2021-12-17T16:18:23.189634Z","shell.execute_reply.started":"2021-12-17T16:18:20.185679Z","shell.execute_reply":"2021-12-17T16:18:23.188577Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:18:24.194953Z","iopub.execute_input":"2021-12-17T16:18:24.195297Z","iopub.status.idle":"2021-12-17T16:18:27.485390Z","shell.execute_reply.started":"2021-12-17T16:18:24.195267Z","shell.execute_reply":"2021-12-17T16:18:27.484299Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:18:28.752826Z","iopub.execute_input":"2021-12-17T16:18:28.753515Z","iopub.status.idle":"2021-12-17T16:18:29.628723Z","shell.execute_reply.started":"2021-12-17T16:18:28.753477Z","shell.execute_reply":"2021-12-17T16:18:29.627770Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"So the separation here seems more prononced. Let's now look at ResNet50.","metadata":{}},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_1/train_ResNet50.npy')","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:18:30.959675Z","iopub.execute_input":"2021-12-17T16:18:30.960436Z","iopub.status.idle":"2021-12-17T16:18:34.278405Z","shell.execute_reply.started":"2021-12-17T16:18:30.960400Z","shell.execute_reply":"2021-12-17T16:18:34.277368Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:18:35.321505Z","iopub.execute_input":"2021-12-17T16:18:35.321828Z","iopub.status.idle":"2021-12-17T16:18:38.392761Z","shell.execute_reply.started":"2021-12-17T16:18:35.321797Z","shell.execute_reply":"2021-12-17T16:18:38.391670Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{"execution":{"iopub.status.busy":"2021-12-17T16:18:39.350991Z","iopub.execute_input":"2021-12-17T16:18:39.352049Z","iopub.status.idle":"2021-12-17T16:18:40.327619Z","shell.execute_reply.started":"2021-12-17T16:18:39.352002Z","shell.execute_reply":"2021-12-17T16:18:40.326687Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"And now InceptionV3:","metadata":{}},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_1/train_InceptionV3.npy')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"How about InceptionResNetV2?","metadata":{}},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_1/train_InceptionResNetV2.npy')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"The separation seems fairly clean.","metadata":{}},{"cell_type":"markdown","source":"Now let's look at ResNet152","metadata":{}},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_2/train_ResNet152.npy')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"The separation is again noticable, but there is a small island of yellow in the midst of purple.\n\nNow let's look at NAS Large.","metadata":{}},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_2/train_NAS_large.npy')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_3/cats_and_dogs_3/train_EB5.npy')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_3/cats_and_dogs_3/train_EB6.npy')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_4/cats_and_dogs_4/train_EB4_ns.npy')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_4/cats_and_dogs_4/train_EB7_ns.npy')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_5/cats_and_dogs_5/train_ENV2S.npy')","metadata":{"execution":{"iopub.status.busy":"2022-09-26T18:39:56.527231Z","iopub.execute_input":"2022-09-26T18:39:56.527620Z","iopub.status.idle":"2022-09-26T18:39:58.331691Z","shell.execute_reply.started":"2022-09-26T18:39:56.527589Z","shell.execute_reply":"2022-09-26T18:39:58.330671Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_5/cats_and_dogs_5/train_ENV2M.npy')","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = np.load('../input/cats-and-dogs-embedded-data/cats_and_dogs_5/cats_and_dogs_5/train_ENV2L.npy')","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ntsne = TSNE(n_components=2)\ntrain_2D = tsne.fit_transform(train)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.scatter(train_2D[:,0], train_2D[:,1], c = target, s = 0.5)","metadata":{},"execution_count":null,"outputs":[]}]}