856 lines
251 KiB
Plaintext
856 lines
251 KiB
Plaintext
|
|
{
|
||
|
|
"cells": [
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "2111825f",
|
||
|
|
"metadata": {
|
||
|
|
"id": "2111825f"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h1 align='center' dir='rtl' style='color:yellow'>نام طرح</h1>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "1ab61eab",
|
||
|
|
"metadata": {
|
||
|
|
"id": "1ab61eab"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h2 align='center' dir='rtl'>فراخوانی کتابخانه های مورد نیاز</h2>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 1,
|
||
|
|
"id": "b97c8a8b",
|
||
|
|
"metadata": {
|
||
|
|
"id": "b97c8a8b"
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"import numpy as np\n",
|
||
|
|
"import matplotlib.pyplot as plt\n",
|
||
|
|
"import tensorflow as tf\n",
|
||
|
|
"from tensorflow import keras\n",
|
||
|
|
"from tensorflow.keras.layers import Dense, Input, Flatten, Conv2D, SimpleRNN, LSTM\n",
|
||
|
|
"from tensorflow.keras.models import Model\n",
|
||
|
|
"from tensorflow.keras.datasets import mnist"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "79ef7ea0",
|
||
|
|
"metadata": {
|
||
|
|
"id": "79ef7ea0"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h2 align='center' dir='rtl'> لود کردن دیتاست MNIST</h2>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 2,
|
||
|
|
"id": "511bc7e3",
|
||
|
|
"metadata": {
|
||
|
|
"colab": {
|
||
|
|
"base_uri": "https://localhost:8080/"
|
||
|
|
},
|
||
|
|
"id": "511bc7e3",
|
||
|
|
"outputId": "af449f04-1da5-4b14-89af-75adf6100681"
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"output_type": "stream",
|
||
|
|
"name": "stdout",
|
||
|
|
"text": [
|
||
|
|
"Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n",
|
||
|
|
"\u001b[1m11490434/11490434\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 0us/step\n"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"train_set, test_set = mnist.load_data()"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "8af0ed71",
|
||
|
|
"metadata": {
|
||
|
|
"id": "8af0ed71"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h2 align='center' dir='rtl'>طراحی لایه های استخراج ویژگی و سنجش نسبت ها</h2>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "bb994741",
|
||
|
|
"metadata": {
|
||
|
|
"id": "bb994741"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h3 align='center' dir='rtl'>لایه استخراج ویژگی</h3>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 3,
|
||
|
|
"id": "8494ca6d",
|
||
|
|
"metadata": {
|
||
|
|
"id": "8494ca6d"
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# لایه استخراج ویژگی\n",
|
||
|
|
"kernel_initializer = 'normal'\n",
|
||
|
|
"activation = \"relu\"\n",
|
||
|
|
"\n",
|
||
|
|
"dtype = tf.float32\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
"def get_module_1():\n",
|
||
|
|
" shape=(28,28, 1)\n",
|
||
|
|
" chs=1\n",
|
||
|
|
" inputs = Input(shape)\n",
|
||
|
|
" layer = Conv2D(filters=32*chs, kernel_size=(3,3), activation=activation, kernel_initializer=kernel_initializer)(inputs)\n",
|
||
|
|
" layer = Conv2D(filters=16*chs, kernel_size=(3,3), strides=(2, 2), activation=activation, kernel_initializer=kernel_initializer)(layer)\n",
|
||
|
|
" layer = Conv2D(filters=8*chs, kernel_size=(3,3), activation=activation, kernel_initializer=kernel_initializer)(layer)\n",
|
||
|
|
" layer = Conv2D(filters=4*chs, kernel_size=(3,3), strides=(2, 2), activation='linear', kernel_initializer=kernel_initializer)(layer)\n",
|
||
|
|
" layer = Conv2D(filters=64*2, kernel_size=(4,4), activation='softplus', kernel_initializer=kernel_initializer)(layer)\n",
|
||
|
|
" layer = Flatten()(layer)\n",
|
||
|
|
" model = Model(inputs, layer)\n",
|
||
|
|
"\n",
|
||
|
|
" return model"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "ed717db9",
|
||
|
|
"metadata": {
|
||
|
|
"id": "ed717db9"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h3 align='center' dir='rtl'>لایه سنجش نسبت ها</h3>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 4,
|
||
|
|
"id": "f63a27eb",
|
||
|
|
"metadata": {
|
||
|
|
"id": "f63a27eb"
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# لایه سنجش نسبت ها\n",
|
||
|
|
"def get_module_2():\n",
|
||
|
|
" shape=(1, 64*2+10,)\n",
|
||
|
|
" inputs = Input(shape)\n",
|
||
|
|
" lstm1 = LSTM(64, return_sequences=True)(inputs)\n",
|
||
|
|
" lstm2 = LSTM(32)(lstm1)\n",
|
||
|
|
" outputs = Dense(10, activation='softmax')(lstm2)\n",
|
||
|
|
" model = Model(inputs, outputs)\n",
|
||
|
|
" return model"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "614adfad",
|
||
|
|
"metadata": {
|
||
|
|
"id": "614adfad"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h2 align='center' dir='rtl'>طراحی و ساختن شبکه عصبی</h2>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 22,
|
||
|
|
"id": "6a14ab0a",
|
||
|
|
"metadata": {
|
||
|
|
"id": "6a14ab0a"
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"def get_m2_input_vector(f0, f1, lbl1):\n",
|
||
|
|
" # ترکیب ویژگی های کلاس مورد مطالعه با کلاس های دیگر\n",
|
||
|
|
"\n",
|
||
|
|
" inp = f0 * f1\n",
|
||
|
|
" return tf.concat([inp, lbl1], axis=1)\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
"class InfluenceModel(keras.Model):\n",
|
||
|
|
" def __init__(self, module_1, module_2):\n",
|
||
|
|
" super(InfluenceModel, self).__init__()\n",
|
||
|
|
" # لایه استخراج ویژگی\n",
|
||
|
|
" self.module_1 = module_1\n",
|
||
|
|
" # لایه تمام متصل (سنجش نسبت ها)\n",
|
||
|
|
" self.module_2 = module_2\n",
|
||
|
|
"\n",
|
||
|
|
" self.loss = keras.losses.SparseCategoricalCrossentropy(from_logits=False)\n",
|
||
|
|
" self.metric = keras.metrics.SparseCategoricalAccuracy()\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
" def compile(self, optimizer_1, optimizer_2):\n",
|
||
|
|
" super(InfluenceModel, self).compile()\n",
|
||
|
|
" self.optimizer_1 = optimizer_1\n",
|
||
|
|
" self.optimizer_2 = optimizer_2\n",
|
||
|
|
"\n",
|
||
|
|
" def call_at_zero(self, x):\n",
|
||
|
|
" # جدا کردن تصاویر\n",
|
||
|
|
" imgs = x[0]\n",
|
||
|
|
" # جدا کردن برچسب\n",
|
||
|
|
" lbls = tf.one_hot(x[1], 10)\n",
|
||
|
|
"\n",
|
||
|
|
" # استخراج ویژگی های تصاویر\n",
|
||
|
|
" features = self.module_1(imgs)\n",
|
||
|
|
"\n",
|
||
|
|
" n_feat = features.shape[0]\n",
|
||
|
|
" # جدا سازی ویژگی های هر تصویر\n",
|
||
|
|
" features = tf.split(features, n_feat, axis=0)\n",
|
||
|
|
"\n",
|
||
|
|
" # ویژگی های استحراج شده تصویر مورد مطالعه\n",
|
||
|
|
" f0 = features[0]\n",
|
||
|
|
"\n",
|
||
|
|
" res_mtx = []\n",
|
||
|
|
" res_row = []\n",
|
||
|
|
" for j in range(1, n_feat):\n",
|
||
|
|
" # ترکیب هر نمونه با تصویر مورد مطالعه\n",
|
||
|
|
" f1 = features[j]\n",
|
||
|
|
" lbl1 = lbls[j:j+1,:]\n",
|
||
|
|
" inp = get_m2_input_vector(f0, f1, lbl1)\n",
|
||
|
|
"\n",
|
||
|
|
" res_row += [inp]\n",
|
||
|
|
"\n",
|
||
|
|
" # محاسبه نسبت هر نمونه با تصویر مورد مطالعه\n",
|
||
|
|
" res_row = tf.concat(res_row, axis=0)\n",
|
||
|
|
" res_row = tf.expand_dims(res_row, axis=1)\n",
|
||
|
|
" res_mtx = self.module_2(res_row)\n",
|
||
|
|
"\n",
|
||
|
|
" # میانگین بر روی نمونه ها\n",
|
||
|
|
" res = tf.reduce_sum(res_mtx, axis=0) / (n_feat-1)\n",
|
||
|
|
" return res, res_mtx\n",
|
||
|
|
"\n",
|
||
|
|
" # Feed - Forward\n",
|
||
|
|
" def call(self, x):\n",
|
||
|
|
" # جدا کردن تصاویر\n",
|
||
|
|
" imgs = x[0]\n",
|
||
|
|
" # جدا کردن برچسب\n",
|
||
|
|
" lbls = tf.one_hot(x[1], 10)\n",
|
||
|
|
"\n",
|
||
|
|
" # استخراج ویژگی های تصاویر\n",
|
||
|
|
" features = self.module_1(imgs)\n",
|
||
|
|
"\n",
|
||
|
|
" # جدا سازی ویژگی های هر تصویر\n",
|
||
|
|
" n_feat = features.shape[0]\n",
|
||
|
|
" features = tf.split(features, n_feat, axis=0)\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
" res_mtx = []\n",
|
||
|
|
" # ساخت جفت های ترکیب شده به ازای هر تصویر برای اموزش مدل\n",
|
||
|
|
" for i in range(n_feat):\n",
|
||
|
|
" res_row = []\n",
|
||
|
|
" for j in range(n_feat):\n",
|
||
|
|
" f0 = features[i]\n",
|
||
|
|
" f1 = features[j]\n",
|
||
|
|
" lbl1 = lbls[j:j+1,:]\n",
|
||
|
|
" inp = get_m2_input_vector(f0, f1, lbl1)\n",
|
||
|
|
" res_row += [inp]\n",
|
||
|
|
" res_row = tf.concat(res_row, axis=0)\n",
|
||
|
|
" res_row = tf.cast(res_row, dtype=tf.float32)\n",
|
||
|
|
" res_row = tf.expand_dims(res_row, axis=1)\n",
|
||
|
|
" # محاسبه سنجش تاثیر حضور تصاویر دیگر در پیش بینی تصویر مورد مطالعه\n",
|
||
|
|
" res_mtx += [self.module_2(res_row)]\n",
|
||
|
|
"\n",
|
||
|
|
" res_mtx = tf.stack(res_mtx)\n",
|
||
|
|
" #\n",
|
||
|
|
" res_mtx = tf.transpose(res_mtx, [2, 1, 0])\n",
|
||
|
|
" #\n",
|
||
|
|
" res_mtx -= tf.linalg.diag(tf.linalg.diag_part(res_mtx))\n",
|
||
|
|
" #\n",
|
||
|
|
" res_mtx = tf.transpose(res_mtx, [2, 1, 0])\n",
|
||
|
|
" #\n",
|
||
|
|
" res = tf.reduce_sum(res_mtx, axis=1) / (n_feat-1)\n",
|
||
|
|
"\n",
|
||
|
|
" return res, res_mtx\n",
|
||
|
|
"\n",
|
||
|
|
" def train_step(self, x):\n",
|
||
|
|
" # تعریف تابع ضرر\n",
|
||
|
|
" loss = keras.losses.SparseCategoricalCrossentropy(from_logits=False)\n",
|
||
|
|
"\n",
|
||
|
|
" # محاسبه گرادیان و اعمال گرادیان\n",
|
||
|
|
" with tf.GradientTape() as tape_1, tf.GradientTape() as tape_2:\n",
|
||
|
|
" output, _ = self.call(x)\n",
|
||
|
|
" loss_batch = loss(x[1], output)\n",
|
||
|
|
" gradient_1 = tape_1.gradient(loss_batch, self.module_1.trainable_variables)\n",
|
||
|
|
" self.optimizer_1.apply_gradients(zip(gradient_1, self.module_1.trainable_variables))\n",
|
||
|
|
" gradient_2 = tape_2.gradient(loss_batch, self.module_2.trainable_variables)\n",
|
||
|
|
" self.optimizer_2.apply_gradients(zip(gradient_2, self.module_2.trainable_variables))\n",
|
||
|
|
"\n",
|
||
|
|
" # اعمال معیار ارزیابی\n",
|
||
|
|
" metric_batch = self.metric(x[1], output)\n",
|
||
|
|
"\n",
|
||
|
|
" return {\"loss\": loss_batch, \"metric\": metric_batch}\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "c1a0891a",
|
||
|
|
"metadata": {
|
||
|
|
"id": "c1a0891a"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h2 align='center' dir='rtl'>اموزش مدل</h2>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "67d4458d",
|
||
|
|
"metadata": {
|
||
|
|
"id": "67d4458d"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h3 align='center' dir='rtl'>اتصال لایه ها</h3>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 6,
|
||
|
|
"id": "f6ed77af",
|
||
|
|
"metadata": {
|
||
|
|
"id": "f6ed77af"
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"m1 = get_module_1()\n",
|
||
|
|
"m2 = get_module_2()\n",
|
||
|
|
"\n",
|
||
|
|
"model = InfluenceModel(m1, m2)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "16f4ec08",
|
||
|
|
"metadata": {
|
||
|
|
"id": "16f4ec08"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h3 align='center' dir='rtl'>کامپایل کردن مدل</h3>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 7,
|
||
|
|
"id": "0bbddc92",
|
||
|
|
"metadata": {
|
||
|
|
"id": "0bbddc92"
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"optimizer_1 = tf.optimizers.Adam(learning_rate=1e-3, beta_1=0.9)\n",
|
||
|
|
"optimizer_2 = tf.optimizers.Adam(learning_rate=1e-3, beta_1=0.9)\n",
|
||
|
|
"\n",
|
||
|
|
"m1.compile(optimizer_1)\n",
|
||
|
|
"m2.compile(optimizer_2)\n",
|
||
|
|
"model.compile(optimizer_1, optimizer_2)\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 8,
|
||
|
|
"id": "b8ea93f6",
|
||
|
|
"metadata": {
|
||
|
|
"colab": {
|
||
|
|
"base_uri": "https://localhost:8080/",
|
||
|
|
"height": 374
|
||
|
|
},
|
||
|
|
"id": "b8ea93f6",
|
||
|
|
"outputId": "13054850-6a0c-484a-8fc1-8858d7eb0c3e"
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"\u001b[1mModel: \"functional\"\u001b[0m\n"
|
||
|
|
],
|
||
|
|
"text/html": [
|
||
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"functional\"</span>\n",
|
||
|
|
"</pre>\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
|
||
|
|
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
|
||
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
|
||
|
|
"│ input_layer (\u001b[38;5;33mInputLayer\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m28\u001b[0m, \u001b[38;5;34m28\u001b[0m, \u001b[38;5;34m1\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ conv2d (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m26\u001b[0m, \u001b[38;5;34m26\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m320\u001b[0m │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ conv2d_1 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m12\u001b[0m, \u001b[38;5;34m12\u001b[0m, \u001b[38;5;34m16\u001b[0m) │ \u001b[38;5;34m4,624\u001b[0m │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ conv2d_2 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m, \u001b[38;5;34m10\u001b[0m, \u001b[38;5;34m8\u001b[0m) │ \u001b[38;5;34m1,160\u001b[0m │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ conv2d_3 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m4\u001b[0m) │ \u001b[38;5;34m292\u001b[0m │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ conv2d_4 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m, \u001b[38;5;34m1\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m8,320\u001b[0m │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ flatten (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
||
|
|
"└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n"
|
||
|
|
],
|
||
|
|
"text/html": [
|
||
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
|
||
|
|
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
|
||
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
|
||
|
|
"│ input_layer (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">InputLayer</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">28</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">28</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ conv2d (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">26</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">26</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">320</span> │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ conv2d_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">12</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">12</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">16</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">4,624</span> │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ conv2d_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">8</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">1,160</span> │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ conv2d_3 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">4</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">4</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">4</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">292</span> │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ conv2d_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">8,320</span> │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ flatten (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Flatten</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
||
|
|
"└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n",
|
||
|
|
"</pre>\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m14,716\u001b[0m (57.48 KB)\n"
|
||
|
|
],
|
||
|
|
"text/html": [
|
||
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">14,716</span> (57.48 KB)\n",
|
||
|
|
"</pre>\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m14,716\u001b[0m (57.48 KB)\n"
|
||
|
|
],
|
||
|
|
"text/html": [
|
||
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">14,716</span> (57.48 KB)\n",
|
||
|
|
"</pre>\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
|
||
|
|
],
|
||
|
|
"text/html": [
|
||
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
|
||
|
|
"</pre>\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"m1.summary()"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 9,
|
||
|
|
"id": "f2ea384a",
|
||
|
|
"metadata": {
|
||
|
|
"colab": {
|
||
|
|
"base_uri": "https://localhost:8080/",
|
||
|
|
"height": 272
|
||
|
|
},
|
||
|
|
"id": "f2ea384a",
|
||
|
|
"outputId": "9a7dc510-a44c-4d69-bc09-26fb404d89a2"
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"\u001b[1mModel: \"functional_1\"\u001b[0m\n"
|
||
|
|
],
|
||
|
|
"text/html": [
|
||
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"functional_1\"</span>\n",
|
||
|
|
"</pre>\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
|
||
|
|
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
|
||
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
|
||
|
|
"│ input_layer_1 (\u001b[38;5;33mInputLayer\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m, \u001b[38;5;34m138\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ lstm (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m51,968\u001b[0m │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ lstm_1 (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m12,416\u001b[0m │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ dense (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m330\u001b[0m │\n",
|
||
|
|
"└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n"
|
||
|
|
],
|
||
|
|
"text/html": [
|
||
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
|
||
|
|
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
|
||
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
|
||
|
|
"│ input_layer_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">InputLayer</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">138</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ lstm (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LSTM</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">51,968</span> │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ lstm_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LSTM</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">12,416</span> │\n",
|
||
|
|
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
|
||
|
|
"│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">330</span> │\n",
|
||
|
|
"└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n",
|
||
|
|
"</pre>\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m64,714\u001b[0m (252.79 KB)\n"
|
||
|
|
],
|
||
|
|
"text/html": [
|
||
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">64,714</span> (252.79 KB)\n",
|
||
|
|
"</pre>\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m64,714\u001b[0m (252.79 KB)\n"
|
||
|
|
],
|
||
|
|
"text/html": [
|
||
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">64,714</span> (252.79 KB)\n",
|
||
|
|
"</pre>\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
|
||
|
|
],
|
||
|
|
"text/html": [
|
||
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
|
||
|
|
"</pre>\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"m2.summary()"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "ac325eb7",
|
||
|
|
"metadata": {
|
||
|
|
"id": "ac325eb7"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h3 align='center' dir='rtl'>اموزش مدل</h3>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 10,
|
||
|
|
"id": "c5e948ab",
|
||
|
|
"metadata": {
|
||
|
|
"scrolled": true,
|
||
|
|
"colab": {
|
||
|
|
"base_uri": "https://localhost:8080/"
|
||
|
|
},
|
||
|
|
"id": "c5e948ab",
|
||
|
|
"outputId": "558b2117-9d0d-4734-e6d8-5ae549fb0c14"
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"output_type": "stream",
|
||
|
|
"name": "stdout",
|
||
|
|
"text": [
|
||
|
|
"Epoch 1/3\n",
|
||
|
|
"\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m437s\u001b[0m 126ms/step - loss: 0.3255 - metric: 0.8450\n",
|
||
|
|
"Epoch 2/3\n",
|
||
|
|
"\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m252s\u001b[0m 121ms/step - loss: 0.0815 - metric: 0.9786\n",
|
||
|
|
"Epoch 3/3\n",
|
||
|
|
"\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m272s\u001b[0m 127ms/step - loss: 0.0633 - metric: 0.9833\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"output_type": "execute_result",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"<keras.src.callbacks.history.History at 0x7ed72d47f6d0>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"execution_count": 10
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"model.fit(train_set[0], train_set[1], epochs=3, batch_size=32)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "a42879cd",
|
||
|
|
"metadata": {
|
||
|
|
"id": "a42879cd"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h2 align='center' dir='rtl'>اماده سازی نمونه ها و محاسبه اهمیت هر نمونه نسبت به حضور دیگر نمونه ها</h2>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 23,
|
||
|
|
"id": "2a669978",
|
||
|
|
"metadata": {
|
||
|
|
"id": "2a669978"
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"def get_samples(sample_ind, batch_size=64):\n",
|
||
|
|
"\n",
|
||
|
|
" # اماده سازی نمونه ها\n",
|
||
|
|
" sample_image = test_set[0][sample_ind:sample_ind+batch_size,...]\n",
|
||
|
|
" sample_label = test_set[1][sample_ind:sample_ind+batch_size,...]\n",
|
||
|
|
" return sample_image, sample_label"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 24,
|
||
|
|
"id": "c910c017",
|
||
|
|
"metadata": {
|
||
|
|
"id": "c910c017"
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"def get_imporance_function(sample_ind):\n",
|
||
|
|
" loss_fnc = tf.keras.losses.SparseCategoricalCrossentropy(reduction='none', from_logits=False)\n",
|
||
|
|
" img, lbl = get_samples(sample_ind, 1)\n",
|
||
|
|
" def get_batch_importance(batch_ind, batch_size=64):\n",
|
||
|
|
" sample_images, sample_labels = get_samples(batch_ind, batch_size)\n",
|
||
|
|
" sample_images = np.concatenate([img, sample_images])\n",
|
||
|
|
" sample_labels = np.concatenate([lbl, sample_labels])\n",
|
||
|
|
"\n",
|
||
|
|
" probs_vec, probs_mtx = model.call_at_zero([sample_images, sample_labels])\n",
|
||
|
|
" samples = probs_mtx.numpy()\n",
|
||
|
|
" probs_vec = probs_vec.numpy()\n",
|
||
|
|
"\n",
|
||
|
|
" m = samples.mean(axis=0)\n",
|
||
|
|
"\n",
|
||
|
|
" # حذف نمونه مورد مطالعه و مشاهده تاثیر حضور دیگر نمونه و عدم حضور نمونه بر پیس بینی\n",
|
||
|
|
" sample_output = samples.sum(axis=0, keepdims=True) - samples\n",
|
||
|
|
" sample_output = sample_output/(batch_size-1)\n",
|
||
|
|
" loss_with_sample = loss_fnc(lbl, m)\n",
|
||
|
|
" loss_without_sample = loss_fnc(tf.repeat(lbl[tf.newaxis, ...], repeats=batch_size, axis=0), sample_output)\n",
|
||
|
|
" sample_importance = loss_with_sample-loss_without_sample\n",
|
||
|
|
" return sample_images[1:,...], sample_importance, probs_vec, samples\n",
|
||
|
|
" return get_batch_importance, img, lbl"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 25,
|
||
|
|
"id": "a4761918",
|
||
|
|
"metadata": {
|
||
|
|
"colab": {
|
||
|
|
"base_uri": "https://localhost:8080/"
|
||
|
|
},
|
||
|
|
"id": "a4761918",
|
||
|
|
"outputId": "1ca243ec-9aaa-4974-a37e-ced6ac5fd023"
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"output_type": "stream",
|
||
|
|
"name": "stdout",
|
||
|
|
"text": [
|
||
|
|
"(64, 1, 138)\n"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"batch_ind = 5888\n",
|
||
|
|
"batch_ind = 4498\n",
|
||
|
|
"batch_ind = 1522\n",
|
||
|
|
"batch_ind = 625\n",
|
||
|
|
"batch_ind = 9698\n",
|
||
|
|
"\n",
|
||
|
|
"batch_size = 64\n",
|
||
|
|
"\n",
|
||
|
|
"batch_ind = batch_ind+1\n",
|
||
|
|
"\n",
|
||
|
|
"sample_ind = batch_ind-1\n",
|
||
|
|
"importance_function_batch, img, lbl = get_imporance_function(sample_ind)\n",
|
||
|
|
"sample_images, importance, probs_vec, sample_output = importance_function_batch(batch_ind)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "52cfc350",
|
||
|
|
"metadata": {
|
||
|
|
"id": "52cfc350"
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"<h2 align='center' dir='rtl'>مشاهده تاثیر دیگر نمونه ها بر پیش بینی مدل</h2>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 26,
|
||
|
|
"id": "7b17b3c2",
|
||
|
|
"metadata": {
|
||
|
|
"colab": {
|
||
|
|
"base_uri": "https://localhost:8080/",
|
||
|
|
"height": 486
|
||
|
|
},
|
||
|
|
"id": "7b17b3c2",
|
||
|
|
"outputId": "ef8a4779-5ce3-4cee-8d18-c45702d4ca5a"
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"output_type": "execute_result",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"<matplotlib.legend.Legend at 0x7ed6fbfbad40>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"execution_count": 26
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1500x500 with 2 Axes>"
|
||
|
|
],
|
||
|
|
"image/png": "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IEBXX3211q5de84xVq1apeTkZAUEBOiqq67Sli1bvI8dPXpUI0aMUFxcnIKCgtS1a1f93//93znPUVZWprFjxyosLEwRERGaOHGiPB6P9/GzlwJV9RozMjK0f/9+XXvttZKkFi1ayGKx6Pe//72kc5cCXexr++OPPyotLU0tWrRQcHCwrrjiCn388cfV+bIDtWfixPLyZNKk8jJFqlyqVDWTBWjEKFYAAEC9lZ2draioqErboqKiVFBQoFOnTlU5xul0qqCgoNKtJjwej06WlJlyO/NNe3W8+eabioiI0Jo1a/TAAw/o/vvv16233qq+fftq/fr1uv7663XHHXfo5MmTkqTDhw9r8ODBuvLKK7Vx40a9+uqrmjt3rp599lnvcz766KP66quv9OGHH+rTTz/VihUrtH79+krHHTt2rFavXq23335bmzZt0q233qobbrhBu3btqlH+Rx99VA8//LA2bNigPn36KC0tTUePHq20z/jx4zVt2jRt27ZNycnJeuyxx/Tee+/pzTff1Pr169WuXTsNGjRIx44dO+e5p0+frrVr16pVq1ZKS0vzXna4uLhYPXr00JIlS7Rlyxbde++9uuOOO7RmzZpzvr52u11r1qzRSy+9pBkzZuj111+v0WuUypcFvffee5KkHTt2KCsrSy+99FKV+17saztmzBg5nU59/fXX2rx5s55//nk1a9asxpmAS3ZmueLvT6mCJq3+zKUEAACoBVOnTtVTTz1lePypUpc6T1pWi4mq74enBynIUf0/z1JSUvTEE09IkiZMmKBp06YpIiJC99xzjyRp0qRJevXVV7Vp0yZdddVVeuWVV5SQkKBZs2bJYrGoU6dOyszM1OOPP65Jkybp5MmTmjt3rv7xj3/ouuuuk1ReLsTHx3uPeeDAAb3xxhs6cOCAYmNjJUmPPPKIli5dqjfeeENTpkypdv6xY8fqlltukSS9+uqrWrp0qebOnavHHnvMu8/TTz+tgQMHSiqfTfPqq69q/vz53iVlc+bM0Weffaa5c+fq0Ucf9Y6bPHmyd1zFa1i0aJFuu+02xcXF6ZFHHvHu+8ADD2jZsmV655131KtXL+/2hIQEvfjii7JYLOrYsaM2b96sF1980fv1rS6bzeZd8hMZGXneE/tW52t74MAB3XLLLerataskqW3btjXKAtSqiROlZ5+VSkokh4NSBU0WxQoAAKi3oqOjlZOTU2lbTk6OQkNDFRgYWOWYCRMmKD093Xu/oKBACQkJdZrTLMnJyd7PbTabWrZs6X3DLck72yc3N1eStG3bNvXp00cWi8W7T79+/VRYWKhDhw7p+PHjKikpUe/evb2Ph4eHq2PHjt77mzdvlsvlUocOHSplcTqdatmyZY3y9+nTx/u53W5Xz549tW3btkr79OzZ0/v5nj17VFpaqn79+nm3+fn5qVevXueMO/O5K15DxT4ul0tTpkzRO++8o8OHD6ukpEROp1NBQUGVnuOqq66q9LXq06ePpk+fLpfLJZvNVqPXWh3V+dr+8Y9/1P33369PP/1UAwYM0C233FLp5wDwqWee+blUKSkpv0+5giaIYgUAANRbffr0Oef8EZ999lmlN81n8/f3l7+/v+FjBvrZ9MPT5pwYN9CvZm/Wz76ajMViqbStohRwu92XHu60wsJC2Ww2r
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"plt.figure(figsize=(15,5))\n",
|
||
|
|
"plt.subplot(121)\n",
|
||
|
|
"plt.imshow(img[0])\n",
|
||
|
|
"plt.title(lbl[0])\n",
|
||
|
|
"plt.axis('off')\n",
|
||
|
|
"\n",
|
||
|
|
"plt.subplot(122)\n",
|
||
|
|
"plt.plot(probs_vec, label='model probabilities')\n",
|
||
|
|
"plt.plot(lbl, 1, 'rx', label='correct label')\n",
|
||
|
|
"plt.legend()"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 27,
|
||
|
|
"id": "e1124039",
|
||
|
|
"metadata": {
|
||
|
|
"colab": {
|
||
|
|
"base_uri": "https://localhost:8080/",
|
||
|
|
"height": 1000
|
||
|
|
},
|
||
|
|
"id": "e1124039",
|
||
|
|
"outputId": "25b8e29e-4df6-4568-a5e1-b11add567f33"
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 640x480 with 1 Axes>"
|
||
|
|
],
|
||
|
|
"image/png": "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
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"output_type": "display_data",
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1500x1500 with 64 Axes>"
|
||
|
|
],
|
||
|
|
"image/png": "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
|
||
|
|
},
|
||
|
|
"metadata": {}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"from matplotlib import pyplot as plt\n",
|
||
|
|
"import numpy as np\n",
|
||
|
|
"\n",
|
||
|
|
"inds = np.argsort(importance)\n",
|
||
|
|
"plt.figure()\n",
|
||
|
|
"plt.plot(sample_output[inds[:5]].mean(axis=0))\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
"plt.figure(figsize=(15,15))\n",
|
||
|
|
"for i in range(len(inds)):\n",
|
||
|
|
" plt.subplot(batch_size//8+1, 8, i+1)\n",
|
||
|
|
" plt.imshow(sample_images[inds[i],...])\n",
|
||
|
|
" plt.title(\"%.7f\"%(importance[inds[i]]))\n",
|
||
|
|
" plt.axis('off')"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"metadata": {
|
||
|
|
"kernelspec": {
|
||
|
|
"display_name": "CV",
|
||
|
|
"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.5"
|
||
|
|
},
|
||
|
|
"colab": {
|
||
|
|
"provenance": []
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"nbformat": 4,
|
||
|
|
"nbformat_minor": 5
|
||
|
|
}
|