Skip to content

Instantly share code, notes, and snippets.

@rhiskey
Created July 13, 2022 14:34
Show Gist options
  • Save rhiskey/c4878dba768341dd1904cecb3b95a7b3 to your computer and use it in GitHub Desktop.
Save rhiskey/c4878dba768341dd1904cecb3b95a7b3 to your computer and use it in GitHub Desktop.
AlexNetArchitecture_Seminarus.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "AlexNetArchitecture_Seminarus.ipynb",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyP0PiRguIK1J6Rhb0SGH6cn",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/rhiskey/c4878dba768341dd1904cecb3b95a7b3/alexnetarchitecture_seminarus.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"source": [
"# Type Maps\t Size Kernel Stride\tPadding\tActivation\n",
"# Out\tFC\t –\t 1000 –\t –\t –\t Softmax\n",
"# F10\tFC\t –\t 4096\t –\t –\t –\t ReLU\n",
"# F9\tFC\t –\t 4096\t –\t –\t –\t ReLU\n",
"# S8\tMax pooling\t256\t 6X6\t 3X3\t 2\t valid\t –\n",
"# C7\tConvolution\t256\t 13X13\t 3X3\t 1\t same\t ReLU\n",
"# C6\tConvolution\t384\t 13X13\t 3X3\t 1\t same\t ReLU\n",
"# C5\tConvolution\t384\t 13X13\t 3X3\t 1\t same\t ReLU\n",
"# S4\tMax pooling\t256\t 13X13\t 3X3\t 2\t valid\t –\n",
"# C3\tConvolution\t256\t 27X27\t 5X5\t 1\t same\t ReLU\n",
"# S2\tMax pooling\t96\t 27X27\t 3X3\t 2\t valid\t –\n",
"# C1\tConvolution\t96\t 55X55\t 11X11\t 4\t valid\t ReLU\n",
"# In\tInput\t 3(RGB) 224X224\t–\t –\t –\t –"
],
"metadata": {
"id": "4toBuQV7wLB5"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Вы можете узнать больше об этой архитектуре из этой [исследовательской работы](https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf)."
],
"metadata": {
"id": "1xobZa2AxFRJ"
}
},
{
"cell_type": "markdown",
"source": [
"# AlexNet в Python"
],
"metadata": {
"id": "BWS6iyNdxLfm"
}
},
{
"cell_type": "code",
"source": [
"import keras\n",
"from keras.models import Sequential, Input, Model\n",
"from keras.layers import Dense, Dropout, Flatten\n",
"from keras.layers import Conv2D, MaxPooling2D\n",
"\n",
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"import keras.layers as layers\n",
"\n",
"model = keras.Sequential()\n",
"\n",
"\n",
"model.add(layers.Conv2D(\n",
" filters=96,\n",
" kernel_size=(11, 11),\n",
" strides=4,\n",
" activation=\"relu\",\n",
" input_shape=(224, 224,3)\n",
"))\n",
"model.add(layers.BatchNormalization())\n",
"model.add(layers.MaxPool2D(\n",
" pool_size=(3, 3),\n",
" strides=2,\n",
"))\n",
"model.add(layers.Conv2D(\n",
" filters=256, \n",
" kernel_size=5,\n",
" strides=1,\n",
" activation=\"relu\",\n",
" padding=\"same\"\n",
"))\n",
"model.add(layers.BatchNormalization())\n",
"model.add(layers.MaxPool2D(\n",
" pool_size=(3, 3),\n",
" strides=2,\n",
"))\n",
"model.add(layers.Conv2D(\n",
" filters=384, \n",
" kernel_size=3,\n",
" strides=1,\n",
" activation=\"relu\",\n",
" padding=\"same\"\n",
"))\n",
"model.add(layers.BatchNormalization())\n",
"model.add(layers.Conv2D(\n",
" filters=384, \n",
" kernel_size=3,\n",
" strides=1,\n",
" activation=\"relu\",\n",
" padding=\"same\"\n",
"))\n",
"model.add(layers.BatchNormalization())\n",
"model.add(layers.Conv2D(\n",
" filters=256, \n",
" kernel_size=3,\n",
" strides=1,\n",
" activation=\"relu\",\n",
" padding=\"same\"\n",
"))\n",
"model.add(layers.BatchNormalization())\n",
"model.add(layers.MaxPool2D(\n",
" pool_size=(3, 3),\n",
" strides=2,\n",
"))\n",
"model.add(layers.Flatten())\n",
"model.add(layers.Dense(4096, activation=\"relu\"))\n",
"model.add(layers.Dropout(0.5))\n",
"model.add(layers.Dense(10, activation=\"softmax\"))\n",
"model.compile(loss='sparse_categorical_crossentropy',\n",
" optimizer='adam',\n",
" metrics=['accuracy']\n",
" )\n",
"model.summary()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8ahbZUF7xNQ4",
"outputId": "f01c6f16-fddf-4189-f6ef-4ca6cc02a426"
},
"execution_count": 2,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_1\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" conv2d (Conv2D) (None, 54, 54, 96) 34944 \n",
" \n",
" batch_normalization (BatchN (None, 54, 54, 96) 384 \n",
" ormalization) \n",
" \n",
" max_pooling2d (MaxPooling2D (None, 26, 26, 96) 0 \n",
" ) \n",
" \n",
" conv2d_1 (Conv2D) (None, 26, 26, 256) 614656 \n",
" \n",
" batch_normalization_1 (Batc (None, 26, 26, 256) 1024 \n",
" hNormalization) \n",
" \n",
" max_pooling2d_1 (MaxPooling (None, 12, 12, 256) 0 \n",
" 2D) \n",
" \n",
" conv2d_2 (Conv2D) (None, 12, 12, 384) 885120 \n",
" \n",
" batch_normalization_2 (Batc (None, 12, 12, 384) 1536 \n",
" hNormalization) \n",
" \n",
" conv2d_3 (Conv2D) (None, 12, 12, 384) 1327488 \n",
" \n",
" batch_normalization_3 (Batc (None, 12, 12, 384) 1536 \n",
" hNormalization) \n",
" \n",
" conv2d_4 (Conv2D) (None, 12, 12, 256) 884992 \n",
" \n",
" batch_normalization_4 (Batc (None, 12, 12, 256) 1024 \n",
" hNormalization) \n",
" \n",
" max_pooling2d_2 (MaxPooling (None, 5, 5, 256) 0 \n",
" 2D) \n",
" \n",
" flatten (Flatten) (None, 6400) 0 \n",
" \n",
" dense (Dense) (None, 4096) 26218496 \n",
" \n",
" dropout (Dropout) (None, 4096) 0 \n",
" \n",
" dense_1 (Dense) (None, 10) 40970 \n",
" \n",
"=================================================================\n",
"Total params: 30,012,170\n",
"Trainable params: 30,009,418\n",
"Non-trainable params: 2,752\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"!pip install visualkeras\n",
"import visualkeras\n",
"\n",
"visualkeras.layered_view(model)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 344
},
"id": "KwbiuNzMxn2A",
"outputId": "4a50b700-6ebc-44ad-f766-46462aa15416"
},
"execution_count": 3,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
"Collecting visualkeras\n",
" Downloading visualkeras-0.0.2-py3-none-any.whl (12 kB)\n",
"Collecting aggdraw>=1.3.11\n",
" Downloading aggdraw-1.3.15-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (989 kB)\n",
"\u001b[K |████████████████████████████████| 989 kB 8.6 MB/s \n",
"\u001b[?25hRequirement already satisfied: numpy>=1.18.1 in /usr/local/lib/python3.7/dist-packages (from visualkeras) (1.21.6)\n",
"Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.7/dist-packages (from visualkeras) (7.1.2)\n",
"Installing collected packages: aggdraw, visualkeras\n",
"Successfully installed aggdraw-1.3.15 visualkeras-0.0.2\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=1807x288 at 0x7F0F140ADFD0>"
],
"image/png": "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\n"
},
"metadata": {},
"execution_count": 3
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment