{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "python_alapok_01.ipynb", "version": "0.3.2", "provenance": [], "collapsed_sections": [], "include_colab_link": true }, "kernelspec": { "name": "python3", "display_name": "Python 3" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "tw9aFQ4EKYyf", "colab_type": "text" }, "source": [ "# Python alpok" ] }, { "cell_type": "code", "metadata": { "id": "IUnDwIl9fV5Z", "colab_type": "code", "colab": {} }, "source": [ "from google.colab import drive\n", "drive.mount('/content/drive')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "X1WTQqEjK2Xt", "colab_type": "code", "colab": {} }, "source": [ "# megjegyzés sor kettős kereszttel kezdődik és ezt a python értelmező kihagyja\n", "\n", "A jol szerkesztett program jól olvasható, a programon belüli tagolások a space(betüköz behúzással) vagy TABULATOR nyomással lehetséges. \n", "Csak az egyiket alkalmazzuk és ne keverjük.\n", "\n", "A véletlen szerú behúzásokat kerüljük. Ez általában hiba üzenetet is okoz." ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "zJQh1b04KiAW", "colab_type": "text" }, "source": [ "## Tipusok" ] }, { "cell_type": "code", "metadata": { "id": "nNUaRG4SKGwq", "colab_type": "code", "outputId": "e3325677-57da-40ba-dc04-5cf54b8696fe", "colab": { "base_uri": "https://localhost:8080/", "height": 126 } }, "source": [ "## Szám tipusú változók\n", "i = 10 # egész szám (int) \n", "f = 3.14 # lebegőpontos szám (float) \n", "c = 2 - 5j # komplex szám (complex) \n", "\n", "print(c) # egy szerű nyomtatás\n", "\n", "## Szöveges állandók\n", "s1 = 'alma' # a határoló jel lehet ' \n", "s2 = \"szilva\" # ...és \" is \n", "s3 = '\"alma\" \"szilva\"' # <= ilyenkor nem kell levédeni a sztringben a \" karaktert!\n", "\n", "# többsoros szöveges állandók\n", "s4 = \"\"\"\n", " alma \n", " szilva\n", " \"\"\" \n", "\n", "print(s4) # egy szerű nyomtatás\n", "\n", "## tömbszerű váltózók\n", "t = (1, 2, 3) # tuple !! utolag nem változtatható meg\n", "l = [1, 2, 3] # lista !! késöbb is bármely eleme módositható\n", "\n", "## halmazszerű \n", "s = {1, 2, 3} # halmaz \n", "d = {'x': 1, 'y': 2, 'z': 3} # szótár\n", "d['x'] # az 'x' kulcshoz rendelt érték lekérdezése \n", "d['x'] = 9 # az 'x' kulcshoz érték módosítása\n", "d['w'] = 0 # új kulcs-érték pár hozzáadása\n", "1 in s # eleme 1 az s halmaznak? \n", "'x' in d # van a d szótárban 'x' kulcs?\n", "\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "(2-5j)\n", "\n", " alma \n", " szilva\n", " \n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "text/plain": [ "True" ] }, "metadata": { "tags": [] }, "execution_count": 5 } ] }, { "cell_type": "markdown", "metadata": { "id": "BQQss_qHN7kz", "colab_type": "text" }, "source": [ "## Műveleti jelek\n", "\n", "Aritmetikai műveletek: +, -, *, /, **, %, //. \n", "\n", "Összehasonlítás: <, <=, ==, !=, >, >=. \n", "\n", "Logikai műveletek: and, or, not. \n", "\n", "Bitenkénti logikai műveletek: &, |, ˆ, ˜, «, ». \n", "\n", "Halmazműveletek: &, |, -. \n", "\n", "Tartalmazásvizsgálat: in, not in. \n", "\n", "Azonosságvizsgálat: is, is not. \n", "\n", "Értékadás: =, +=, -=, *=, /=, **=, %=, //=, ...\n" ] }, { "cell_type": "markdown", "metadata": { "id": "thJEWh2SPVUY", "colab_type": "text" }, "source": [ "## Tipusok közötti konverziók" ] }, { "cell_type": "code", "metadata": { "id": "rf8gy99ZOwSR", "colab_type": "code", "outputId": "2dd3d5a4-06c3-454a-c708-724a2f34fb1f", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "## tipus konverzió\n", "int(2.3) # float => int \n", "float('10') # str => float \n", "str(20) # int => str \n", "tuple([1, 2, 3]) # list => tuple \n", "list((4, 5, 6)) # tuple => list \n", "set((7, 8, 9)) # tuple => set\n", "\n", "dict([('a', 1), ('b', 2)]) # pairs => dict \n", "list({'a': 1, 'b': 2}.items()) # dict => pairs\n" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[('a', 1), ('b', 2)]" ] }, "metadata": { "tags": [] }, "execution_count": 6 } ] }, { "cell_type": "markdown", "metadata": { "id": "6yxGh8lyPxHG", "colab_type": "text" }, "source": [ "## Vezérlési szerkezetek (elágazás, ciklus)" ] }, { "cell_type": "code", "metadata": { "id": "U_AfIagwP3zm", "colab_type": "code", "outputId": "d5ebc457-b987-4228-ab2b-480548d21f2f", "colab": { "base_uri": "https://localhost:8080/", "height": 108 } }, "source": [ "## Elágazások\n", "if 2 * 2 == 4: # Pythonban a elágazás feltétel megadása kettős ponttal zárulnak\n", " print('alma') # feltétel teljesülés belseje (végrehajtási kód) sorbehuzással különül el \n", "elif 2 * 2 == 5: # a kód többi részétől. \n", " print('szilva') \n", "else: # Emiatt garantált, hogy a program \n", " print('tök') # megjelenése és logikai jelentése # összhangban van.\n", "\n", "\n", "## Ciklusok\n", "\n", "# végtelen ciklus megjegyzésként védve\n", "# while True: pass # Ha csak 1 végrehajtandó utasítás van, akkor írhatjuk a while-lal 1 sorba.\n", "\n", " \n", "# a 0-tól 4-ig terjedő egész számok hetedik hatványának kiírása \n", "for i in range(4): \n", " print(i**7)\n", "\n", "# ciklusokből (azonnali) kilési parancsok : break, continue\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "alma\n", "0\n", "1\n", "128\n", "2187\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "6hNJsj5vRwIH", "colab_type": "text" }, "source": [ "## Program be és kimenet " ] }, { "cell_type": "code", "metadata": { "id": "vRY0VuSbR30b", "colab_type": "code", "outputId": "76f75906-0bb6-4dbf-84c6-f87325a9aa91", "colab": { "base_uri": "https://localhost:8080/", "height": 90 } }, "source": [ "## standard bemenet \n", "\n", "x = input('Kérek egy mondatot: ') # programon belüli adatbekérő lehetőség\n", "y = int(input('Kérek egy egész számot: ')) # tipus konverzióvál váltunk számjegy kérésre\n", " \n", " \n", "## standard kimenet \n", "print('hello') # kiírás soremeléssel \n", "print('hello', end='') # kiírás soremelés nélkül\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Kérek egy mondatot: 2\n", "Kérek egy egész számot: 34\n", "hello\n", "hello" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "CQI2p2yCThQz", "colab_type": "text" }, "source": [ "## Comprehension (értelmezés, érték feltölés)\n" ] }, { "cell_type": "code", "metadata": { "id": "vIzXKS5YTlgj", "colab_type": "code", "outputId": "87fb0b79-f498-494d-be5a-bee65f721fc1", "colab": { "base_uri": "https://localhost:8080/", "height": 54 } }, "source": [ "\n", "## feltétel nélküli \n", "a = [x**2 for x in range(10)] \n", "b = {x**2 for x in range(10)} \n", "c = {x: x**2 for x in range(10)} \n", "\n", "print (c)\n", "\n", "## feltételes \n", "a = [x**2 for x in range(10) if x % 2 == 0] \n", "b = {x**2 for x in range(10) if x % 2 == 0} \n", "c = {x: x**2 for x in range(10) if x % 2 == 0}\n", "\n", "print (c)\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}\n", "{0: 0, 2: 4, 4: 16, 6: 36, 8: 64}\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "qBF6Uv8tUBha", "colab_type": "text" }, "source": [ "## Rendezés" ] }, { "cell_type": "code", "metadata": { "id": "Ps-YNwCNUG0p", "colab_type": "code", "outputId": "087acf8a-a81d-4ac2-fc05-52b45b8e9d3d", "colab": { "base_uri": "https://localhost:8080/", "height": 54 } }, "source": [ "# lista rendezése helyben \n", "l = [2, 4, 1, 3] \n", "l.sort()\n", "\n", "\n", "# kollekció rendezése listába \n", "l1 = sorted((2, 4, 1, 3)) \n", "l2 = sorted([2, 4, 1, 3]) \n", "l3 = sorted({2: 'b', 4: 'd', 1: 'a', 3: 'c'})\n", "\n", "print(l3)\n", "\n", "\n", "# párok listájának rendezése \n", "l1 = [('alma', 20), ('szilva', 30), ('barack', 10)] \n", "l2 = sorted(l1) # a kulcs a 0-ás elem \n", "l3 = sorted(l1, key=lambda x: x[1]) # a kulcs az 1-es elem\n", "\n", "print(l3)\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "[1, 2, 3, 4]\n", "[('barack', 10), ('alma', 20), ('szilva', 30)]\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "xYB20tAuU5M3", "colab_type": "text" }, "source": [ "## Fájl kezelés" ] }, { "cell_type": "code", "metadata": { "id": "O-oxSaDFU9UH", "colab_type": "code", "outputId": "a0fe639d-fc5b-4783-b408-d2ba240a5205", "colab": { "base_uri": "https://localhost:8080/", "height": 272 } }, "source": [ "## fájl irás\n", "f = open('pascal.txt', 'w') ## elérési könyvtár megadása is szükséges lehet\n", "f.write(' Első sor \\n') \n", "f.write(' 2 sor \\n') \n", "f.write(' 3 sor \\n') \n", "f.close()\n", "\n", "\n", "## fájl olvasás 1\n", "content = open('pascal.txt').read() # azonnali, direct beolvasás sztringbe (!! csinnyán bánjunk vele nagy fájlok esetén)\n", "print(content)\n", "\n", "## fájl olvasás 2\n", "lines = open('pascal.txt').readlines() # sorok beolvasása sztringlistába\n", "print(lines)\n", "\n", "\n", "\n", "# Pascal-háromszög kiszámítása és fájlba írása (komplex minta)\n", "f = open('pascal.txt', 'w') ## elérési könyvtár megadása is szükséges lehet\n", "p = [1] \n", "for n in range(10): \n", " f.write(str(p) + '\\n') \n", " q = [p[i] + p[i + 1] for i in range(len(p) - 1)] \n", " p = [1] + q + [1] \n", "f.close()\n", "\n", "\n", "\n", "## olvasás ciklusal\n", "f = open('pascal.txt') \n", "f.readline() # 1. sor átugrása\n", "for line in f: # további sorok tokenizálása \n", " print(line.split(',')) \n", "f.close()\n", "\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ " Első sor \n", " 2 sor \n", " 3 sor \n", "\n", "[' Első sor \\n', ' 2 sor \\n', ' 3 sor \\n']\n", "['[1', ' 1]\\n']\n", "['[1', ' 2', ' 1]\\n']\n", "['[1', ' 3', ' 3', ' 1]\\n']\n", "['[1', ' 4', ' 6', ' 4', ' 1]\\n']\n", "['[1', ' 5', ' 10', ' 10', ' 5', ' 1]\\n']\n", "['[1', ' 6', ' 15', ' 20', ' 15', ' 6', ' 1]\\n']\n", "['[1', ' 7', ' 21', ' 35', ' 35', ' 21', ' 7', ' 1]\\n']\n", "['[1', ' 8', ' 28', ' 56', ' 70', ' 56', ' 28', ' 8', ' 1]\\n']\n", "['[1', ' 9', ' 36', ' 84', ' 126', ' 126', ' 84', ' 36', ' 9', ' 1]\\n']\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "59TSgpBJXjzv", "colab_type": "text" }, "source": [ "## Kicsomagolás (unpacking)\n" ] }, { "cell_type": "code", "metadata": { "id": "G7fXFubYXnE4", "colab_type": "code", "outputId": "ccf3bdc5-bec4-4501-efb8-7949f78a1d17", "colab": { "base_uri": "https://localhost:8080/", "height": 199 } }, "source": [ "## általános eset: \n", "x, (y, z) = [10, (20, 30)] \n", "\n", "print(x)\n", "print(y)\n", "print(z)\n", "print('-------1-----')\n", " \n", "## többszörös értékadás: \n", "a, b = 30, 40 \n", "\n", "print(a)\n", "print(b)\n", "print('-------2-----')\n", "\n", "## csere (egylépésben): \n", "a, b = b, a\n", "\n", "print(a)\n", "print(b)\n", "print('-------3-----')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "10\n", "20\n", "30\n", "-------1-----\n", "30\n", "40\n", "-------2-----\n", "40\n", "30\n", "-------3-----\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "V_nd5xG2YSfl", "colab_type": "text" }, "source": [ "## Indexelés (slicing) \n", "\n", "Slice jelölésmód: [alsó határ: felső határ: lépésköz]\n" ] }, { "cell_type": "code", "metadata": { "id": "hnHEz-ORYYPs", "colab_type": "code", "outputId": "6925bab7-1e78-4f83-f550-17993a2b7b66", "colab": { "base_uri": "https://localhost:8080/", "height": 72 } }, "source": [ "a = ['spam', 'eggs', 1, 2]\n", "print(a[:2], a[1: 3], a[:]) # => ['spam', 'eggs'] ['eggs', 1] ['spam', 'eggs', 1, 2]\n", "print(a[-1], a[:-2]) # => 2 ['spam', 'eggs']\n", "print(a[::-1], a[1::2]) # => [2, 1, 'eggs', 'spam'] ['eggs', 2]\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "['spam', 'eggs'] ['eggs', 1] ['spam', 'eggs', 1, 2]\n", "2 ['spam', 'eggs']\n", "[2, 1, 'eggs', 'spam'] ['eggs', 2]\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "KbZLuSJ_YrKE", "colab_type": "text" }, "source": [ "## Iterálási technikák\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "zQ28w3JIYv-s", "colab_type": "code", "outputId": "6995517b-7487-4f1c-a17b-af158ffaa1bd", "colab": { "base_uri": "https://localhost:8080/", "height": 290 } }, "source": [ "a = ['A', 'B', 'C']\n", "\n", "for i in range(len(a)): # C nyelv szerü megadás mód \n", " print(i, a[i])\n", " \n", "print('-------1-----')\n", "\n", "for i, ai in enumerate(a): # Python nyelv szerü megadás mód \n", " print(i, ai)\n", "\n", "\n", "print('-------11-----')\n", " \n", " \n", "a = ['A', 'B', 'C'] \n", "b = ['X', 'Y', 'Z']\n", "\n", "for i in range(len(a)): # C nyelv szerü megadás mód \n", " print(a[i], b[i])\n", " \n", "print('-------1-----')\n", "\n", "for ai, bi in zip(a, b): # Python nyelv szerü megadás mód \n", " print(ai, bi)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "0 A\n", "1 B\n", "2 C\n", "-------1-----\n", "0 A\n", "1 B\n", "2 C\n", "-------11-----\n", "A X\n", "B Y\n", "C Z\n", "-------1-----\n", "A X\n", "B Y\n", "C Z\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "86nxIovWZ9Fj", "colab_type": "text" }, "source": [ "## Függvények\n", " \n", " docstring \n", " \n", " pozícionális és kulcsszó argumentumok, \n", " \n", "\n", "```\n", " *args, \n", " **kwargs\n", "```\n", "\n", "\n", " \n", " egymásba ágyazás, attribútumok\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "CBjFXIM3aANQ", "colab_type": "code", "outputId": "c2366164-b852-431b-a417-6879e5929b66", "colab": { "base_uri": "https://localhost:8080/", "height": 72 } }, "source": [ "## függvény létrehozása 1\n", "def root(x, n=2): \n", " ''' docstring rész\n", " függvény belső leirasa, hogy mit csinál\n", " n-th root of x.\n", " ''' \n", " return x**(1.0 / n)\n", "\n", "## függvény meghivása 1\n", "print(root(2,2))\n", "\n", "print('----------1--------------')\n", "\n", "## függvény létrehozása 2\n", "def fibon(F1=1, F2=1): \n", " '''Return function that computes the \n", " Fibonacci sequence with starting elements \n", " F1 and F2.\n", " ''' \n", " \n", " def g(n): \n", " if n == 1: return F1 \n", " elif n == 2: return F2 \n", " else: return (g(n - 1) + g(n - 2)) \n", " return g\n", "\n", "## függvény meghivása 2\n", "print(fibon(3))\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "1.4142135623730951\n", "----------1--------------\n", ".g at 0x7f2c4359ca60>\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "W0xSvsoH1xp4", "colab_type": "text" }, "source": [ "## Modulok és Csomagok\n", "\n", "### Modul: Python nyelvű fájl. \n", "\n", "- Definíciókat és utasításokat tartalmaz. \n", "\n", "- Ha a modulhoz az xyz.py fájl tartozik, akkor a modulra xyz néven lehet hivatkozni. \n", "\n", "- A modulok más Python programokból importálhatók. \n", "\n", "\n", "### Csomag: Modulok gyűjteménye. \n", " \n", " - Egy csomag alcsomagokat/modulokat is tartalmazhat.\n", "* A hierarchiát a csomagon belüli könyvtárszerkezet határozza meg. * \n", "A használatnál az egye könyvtárak pont operator után adhatok meg a névben.\n", "\n", " - A standard csomagok és modulok a standard könyvtárban találhatók, és nem igényelnek telepítést. \n", " \n", " - A külső csomagok gyűjtőhelye a [PyPi](https://pypi.python.org/pypi) \n" ] }, { "cell_type": "code", "metadata": { "id": "gT7mfSNJ3Lb6", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 70 }, "outputId": "edd029bd-c46a-4aea-ce98-c702ef8185c0" }, "source": [ "\n", "# a random nevű standard modul importálása \n", "import random \n", "print(random.randint(1, 100)) # eredmény nyomtatása\n", "\n", "\n", "# a random modulban található randint függvény importálása \n", "from random import randint \n", "print(randint(1, 100)) # eredmény nyomtatása\n", "\n", "\n", "# modul teljes tartalmának importálása (megjegyzés: általában kerülendő a névütközések miatt) \n", "from random import * \n", "print(randint(1, 100))\n", "\n", "\n", "# függvény importálása almodulból \n", "from os.path import basename\n", "\n", "\n", "# csomag importálása rövidített néven \n", "# (megjegyzés: a numpy egy külső csomag ezért előzetes installálása is szükséges lehet) \n", "import numpy as np\n" ], "execution_count": 40, "outputs": [ { "output_type": "stream", "text": [ "13\n", "17\n", "10\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "Ao0QuAou4RU_", "colab_type": "text" }, "source": [ "## Standard könyvtár\n", "\n", "A Python standard könyvtára széleskörű szolgáltatásokat nyújt a programozók számára. \n", "\n", "- önmagában is több mint 200 csomagot ill. modult tartalmaz. \n", "\n", "- Szabványos megoldást biztosít a programozás mindennapjaiban felmerülő számos feladatra. \n", "\n", "- Részletes dokumentáció: https://docs.python.org/3/library/index.html \n", "\n", "\n", "Kiindulásnak standard könyvtár egy kis részének az áttekintésére vállalkozunk. \n", "\n", "A jó programozó nem találja fel újra a spanyolviaszt. Ha lehetséges, akkor a standard könyvtár eszközeivel oldja meg a feladatot. *italicized text*\n", "\n", "\n", "\n", "### A standard könyvtár szolgáltatásai \n", "\n", "**szövegfeldolgozásra:** string, re, difflib, textwrap, unicodedata, stringprep, readline, rlcompleter \n", "\n", "**bináris adatok feldolgozására:** struct, codecs \n", "\n", "**adattípusokkal kapcsolatban**: datetime, calendar, collections, heapq, bisect, array, weakref, types, copy, pprint, reprlib \n", "\n", "**matematikai**: numbers, math, cmath, decimal, fractions, random \n", "\n", "**funkcionális programozásra**: itertools, functools, operator\n" ] }, { "cell_type": "code", "metadata": { "id": "mZgDDzjr5Ckl", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 70 }, "outputId": "75372c5c-00d5-480b-af56-0ee4c375d515" }, "source": [ "import re ## könyvtár betöltés\n", "\n", "# illeszkedésvizsgálat \n", "pattern = '^X+ .*' \n", "text = 'XXXX alma' \n", "if re.match(pattern, text): \n", " print('a szöveg illeszkedik a mintára')\n", " \n", "# ha többször használunk egy reguláris kifejezést, érdemes lefordítani \n", "p = re.compile('^X* .*')\n", "\n", "# illeszkedésvizsgálat lefordított reguláris kifejezéssel \n", "print(p.match('alma')) # => None # (if-ben hamisnak számít) \n", "print(p.match('XXXX alma')) # => _sre.SRE_Match object # (if-ben igaznak számít)\n" ], "execution_count": 41, "outputs": [ { "output_type": "stream", "text": [ "a szöveg illeszkedik a mintára\n", "None\n", "<_sre.SRE_Match object; span=(0, 9), match='XXXX alma'>\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "MGelMT-L51Li", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 87 }, "outputId": "ea239086-7a21-432b-f5ad-a0f93ac7baac" }, "source": [ "import datetime ## könyvtár betöltés\n", "# mikroszekundum pontosságú időpont megadása \n", "print(datetime.datetime(2018, 2, 26, 9, 30, 30, 1000)) # (megjegyzés: időzóna információt is megadhatnánk)\n", "\n", "\n", "# aritmetika nap pontosságú dátumokkal \n", "print(datetime.date(2018, 7, 31) + datetime.timedelta(1)) # => '2018-08-01'\n", "\n", "\n", "# időzóna megadása a dátumhoz \n", "utc1 = datetime.timezone(datetime.timedelta(0, 3600)) \n", "print(utc1) # => 'UTC+01:00' \n", "\n", "\n", "print(datetime.datetime(2018, 2, 26, 9, 30, 30)) # => '2018-02-26 09:30:30'\n", "\n", "\n", "## Megjegyzés : nem szabványos csomagok időkezelésre: dateutil, pytz\n" ], "execution_count": 43, "outputs": [ { "output_type": "stream", "text": [ "2018-02-26 09:30:30.001000\n", "2018-08-01\n", "UTC+01:00\n", "2018-02-26 09:30:30\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "1an_rprb6tSp", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 87 }, "outputId": "63f9ebd7-58d1-4d03-f508-5f25a7e751d8" }, "source": [ "import collections ## könyvtár betöltés\n", "\n", "# gyakoriságszámítást végző szótár \n", "print(collections.Counter([1, 1, 2])) # => Counter({1: 2, 2: 1})\n", "\n", "\n", "# alapértelmezett értéket feltételező szótár \n", "data = [(1, 'alma'), (2, 'körte'), (1, 'barack')] \n", "groups = collections.defaultdict(list) \n", "for x, y in data: \n", " groups[x].append(y) \n", "print(groups) # => defaultdict(, \n", " # {1: ['alma', 'barack'], 2: ['körte']})\n", " \n", "# garantáltan sorrendtartó szótár \n", "od = collections.OrderedDict() \n", "for i in 1, 2, 3: \n", " od[i] = i**2 \n", "print(od) # => OrderedDict([(1, 1), (2, 4), (3, 9)])\n", " \n", "# olyan tuple, ahol névvel is lehet hivatkozni az elemekre \n", "Point = collections.namedtuple('Point', ('x', 'y')) \n", "p = Point(2, 3) \n", "print(p[0], p[1], p.x, p.y) # => 2 3 2 3\n" ], "execution_count": 44, "outputs": [ { "output_type": "stream", "text": [ "Counter({1: 2, 2: 1})\n", "defaultdict(, {1: ['alma', 'barack'], 2: ['körte']})\n", "OrderedDict([(1, 1), (2, 4), (3, 9)])\n", "2 3 2 3\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "9q8QhnKo7bJW", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 87 }, "outputId": "8c9ddcfd-87c4-48a2-9c49-bc3846e15cb4" }, "source": [ "import copy ## könyvtár betöltés\n", "\n", "# sekély másolat: csak legfelsőbb szintű elemek másolódnak \n", "a = [1, [2, 3]] \n", "b = copy.copy(a) \n", "b[1][0] = 20 \n", "print(a) # => [1, [20, 3]] \n", "print(b) # => [1, [20, 3]] b változtatásától a is változott!\n", "\n", "# mély másolat: az adatszerkezet összes eleméről másolat készül \n", "a = [1, [2, 3]] \n", "b = copy.deepcopy(a) \n", "b[1][0] = 20 \n", "print(a) # => [1, [2, 3]] \n", "print(b) # => [1, [20, 3]] a nem változott, csak b\n" ], "execution_count": 45, "outputs": [ { "output_type": "stream", "text": [ "[1, [20, 3]]\n", "[1, [20, 3]]\n", "[1, [2, 3]]\n", "[1, [20, 3]]\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "QnAHiNxn7_pU", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 212 }, "outputId": "00cbf5a9-42cd-4c88-b9df-e7edd97fe3c7" }, "source": [ "import math ## könyvtár betöltés\n", "\n", "# állandók \n", "print(math.e) # => 2.718281828459045 \n", "print(math.pi) # => 3.141592653589793\n", "\n", "\n", "# függvények \n", "print(math.sin(0)) # => 0.0 \n", "print(math.cos(0)) # => 1.0 \n", "print(math.asin(0.5)) # => 0.5235987755982989 \n", "print(math.acos(0.5)) # => 1.047197551196597 \n", "print(math.exp(1)) # => 2.718281828459045 \n", "print(math.log(1)) # => 0.0\n", "\n", "\n", "# radián-fok átalakítás \n", "print(math.degrees(math.pi)) # => 180.0 \n", "print(math.radians(45)) # => 0.7853981633974483\n", "\n", "\n", "# áttérés polárkoordinátákra \n", "x, y = 3, -4 \n", "r = math.hypot(x, y) \n", "phi = math.atan2(y, x) \n", "print(r, phi) # => 5.0 -0.9272952180016122\n" ], "execution_count": 46, "outputs": [ { "output_type": "stream", "text": [ "2.718281828459045\n", "3.141592653589793\n", "0.0\n", "1.0\n", "0.5235987755982989\n", "1.0471975511965979\n", "2.718281828459045\n", "0.0\n", "180.0\n", "0.7853981633974483\n", "5.0 -0.9272952180016122\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "liKQqSHQ8avE", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 105 }, "outputId": "65932e1d-af69-41e9-b887-cc89790ed8fb" }, "source": [ "import random ## könyvtár betöltés\n", "\n", "\n", "# véletlenszám-generátor állapotának beállítása \n", "random.seed(42)\n", "\n", "\n", "# float típusú érték generálása a [0, 1) intervallumból \n", "print(random.random()) # => 0.6394267984578837\n", "\n", "\n", "# véletlenszám-generátor objektum létrehozása \n", "r = random.Random(42)\n", "\n", "\n", "# float típusú érték generálása a [0, 1) intervallumból \n", "print(r.random()) # => 0.6394267984578837\n", "\n", "\n", "# kockadobás szimulálása \n", "print(r.randint(1, 6)) # => 2\n", "\n", "\n", "# elem kisorsolása egy szekvenciából \n", "print(r.choice(['a', 'b', 'c', 'd'])) # => 'b'\n", "\n", "\n", "# visszatevés nélküli mintavétel \n", "print(r.sample(['a', 'b', 'c', 'd'], 2)) # => ['a', 'c']\n", "\n" ], "execution_count": 47, "outputs": [ { "output_type": "stream", "text": [ "0.6394267984578837\n", "0.6394267984578837\n", "1\n", "c\n", "['b', 'a']\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "1j6kC8yr87w-", "colab_type": "text" }, "source": [ "## Funkcionális programozás" ] }, { "cell_type": "code", "metadata": { "id": "-bkFhgdf88J5", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 52 }, "outputId": "8b965510-2aac-43c8-b837-4244f20b2df5" }, "source": [ "## lambda kifejezés: egysoros, névtelen függvény \n", "sqr = lambda x: x**2 \n", "print(sqr(4)) # használata nyomtatásban\n", "\n", "\n", "add = lambda x, y: x + y \n", "print(add(1, 2)) # használata nyomtatásban\n", "\n", "\n", "## map: függvényt alkalmaz egy kollekció elemeire \n", "a = map(int, ['1', '2', '3']) \n", "\n", "b = map(lambda x: 2 * x, [1, 2, 3])\n", "\n" ], "execution_count": 57, "outputs": [ { "output_type": "stream", "text": [ "16\n", "3\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "9FP_fFHu-mrU", "colab_type": "text" }, "source": [ "# Osztályok" ] }, { "cell_type": "code", "metadata": { "id": "1r7Znjxa-o4E", "colab_type": "code", "colab": {} }, "source": [ "## ősosztály \n", "import math\n", "class Shape: \n", " def circularity(self): \n", " a = self.area() \n", " p = self.perimeter() \n", " return 4 * math.pi * a / p**2 \n", " \n", " \n", "## leszármazott osztály 1 \n", "class Circle(Shape): \n", " def __init__(self, r): self._r = r \n", " def perimeter(self): return 2 * self._r * math.pi \n", " def area(self): return self._r**2 * math.pi\n", " \n", " \n", "## leszármazott osztály 2 \n", "class Rectangle(Shape): \n", " def __init__(self, a, b): self._a, self._b = a, b \n", " def perimeter(self): return 2 * (self._a + self._b) \n", " def area(self): return self._a * self._b\n", "\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "G-1DC56A_5QR", "colab_type": "text" }, "source": [ "## Speciális („dunder”) attribútumok és metódusok\n", "\n", "\n", "```\n", "__doc__, __class__, __init__(), __hash__(), __code__ \n", "\n", "**attribútumtárolásra:** __dict__, __dir__() \n", "\n", "**kiírásra:** __repr__(), __str__() \n", "\n", "**műveletvégzésre**: __add__(), __mul__(), ... \n", "\n", "**indexelésre**: __getitem__(), __setitem__(), __len__() \n", "\n", "**iterálásra**: __iter__(), __next__() \n", "\n", "**kontextuskezelésre**: __enter__(), __exit__()\n", "```\n", "\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "Fv4eY64i_5bR", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 34 }, "outputId": "152da6d2-f3de-4d47-c2cb-3292f4f27cd9" }, "source": [ "## tesztelés vektorokkal\n", "\n", "class Vector(object):\n", " def __init__(self, sequence):\n", " self._internal_list = list(sequence)\n", "\n", "my_vector = Vector([1, 2, 3])\n", "print(my_vector)\n", "\n", "\n", "v1 = Vector([1.0, 2.0, 3.0]) \n", "v2 = Vector([4.0, 5.0, 6.0]) \n", "\n", "print(len(v1), v1[0], v1[:2]) # => 3 1.0 [1.0, 2.0] \n", "\n", "print(v1 + v2) # => Vector([5.0, 7.0, 9.0]) \n", "\n", "print(v1 * v2) # => Vector([4.0, 10.0, 18.0])\n", "\n", "\n" ], "execution_count": 71, "outputs": [ { "output_type": "stream", "text": [ "<__main__.Vector object at 0x7f2c434d0198>\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "5MjwosLIBT43", "colab_type": "text" }, "source": [ "## Kivételkezelés" ] }, { "cell_type": "code", "metadata": { "id": "mpdJ6hYaBVIm", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 34 }, "outputId": "dd475d10-1135-456b-a5ad-c46bed6caf9a" }, "source": [ "##minta\n", "x = int(input('Please enter an even number: ')) \n", "if x % 2 != 0: \n", " raise ValueError('Odd number given!')\n", " \n", " \n", "def divide(x, y): \n", " try: \n", " return x / y \n", " except ZeroDivisionError: \n", " print('Division by zero!') \n", " finally: \n", " print('Executing finally clause.')\n" ], "execution_count": 68, "outputs": [ { "output_type": "stream", "text": [ "Please enter an even number: 4\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "7Gyl7uxKBy-E", "colab_type": "text" }, "source": [ "## Hibakeresés" ] }, { "cell_type": "code", "metadata": { "id": "TmBrsM6pB0iU", "colab_type": "code", "colab": {} }, "source": [ "## buggy.py file tartalma\n", "def myavg(sequences): \n", " joined = [] \n", " for s in sequences: \n", " joined.append(s) \n", " return sum(joined) / len(joined)\n", "\n", "\n", "sequences = [[1, 2, 3], [4, 5], [6, 7]] \n", "print(myavg(sequences)) \n", "\n", "\n", "\n", "## hibakeresés Jupyter Notebook környezetben: %run buggy.py %debug\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "NyOcSyQaEbAz", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 52 }, "outputId": "f94dd2b5-4920-41bc-8276-c6800d881b30" }, "source": [ "## modul installálása colab Jupyter notebook alatt\n", "!pip install -U -q PyDrive \n", " \n", " " ], "execution_count": 74, "outputs": [ { "output_type": "stream", "text": [ "\u001b[?25l\r\u001b[K |▎ | 10kB 14.0MB/s eta 0:00:01\r\u001b[K |▋ | 20kB 1.8MB/s eta 0:00:01\r\u001b[K |█ | 30kB 2.6MB/s eta 0:00:01\r\u001b[K |█▎ | 40kB 1.7MB/s eta 0:00:01\r\u001b[K |█▋ | 51kB 2.1MB/s eta 0:00:01\r\u001b[K |██ | 61kB 2.5MB/s eta 0:00:01\r\u001b[K |██▎ | 71kB 2.8MB/s eta 0:00:01\r\u001b[K |██▋ | 81kB 3.2MB/s eta 0:00:01\r\u001b[K |███ | 92kB 3.6MB/s eta 0:00:01\r\u001b[K |███▎ | 102kB 2.8MB/s eta 0:00:01\r\u001b[K |███▋ | 112kB 2.8MB/s eta 0:00:01\r\u001b[K |████ | 122kB 2.8MB/s eta 0:00:01\r\u001b[K |████▎ | 133kB 2.8MB/s eta 0:00:01\r\u001b[K |████▋ | 143kB 2.8MB/s eta 0:00:01\r\u001b[K |█████ | 153kB 2.8MB/s eta 0:00:01\r\u001b[K |█████▎ | 163kB 2.8MB/s eta 0:00:01\r\u001b[K |█████▋ | 174kB 2.8MB/s eta 0:00:01\r\u001b[K |██████ | 184kB 2.8MB/s eta 0:00:01\r\u001b[K |██████▎ | 194kB 2.8MB/s eta 0:00:01\r\u001b[K |██████▋ | 204kB 2.8MB/s eta 0:00:01\r\u001b[K |███████ | 215kB 2.8MB/s eta 0:00:01\r\u001b[K |███████▎ | 225kB 2.8MB/s eta 0:00:01\r\u001b[K |███████▋ | 235kB 2.8MB/s eta 0:00:01\r\u001b[K |████████ | 245kB 2.8MB/s eta 0:00:01\r\u001b[K |████████▎ | 256kB 2.8MB/s eta 0:00:01\r\u001b[K |████████▋ | 266kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████ | 276kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████▎ | 286kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████▋ | 296kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████ | 307kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████▎ | 317kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████▋ | 327kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████ | 337kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████▎ | 348kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████▋ | 358kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████ | 368kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████▎ | 378kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████▋ | 389kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████ | 399kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████▎ | 409kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████▋ | 419kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████ | 430kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████▎ | 440kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████▋ | 450kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████ | 460kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████▎ | 471kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████▋ | 481kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████ | 491kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████▎ | 501kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████▋ | 512kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████████ | 522kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████████▎ | 532kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████████▋ | 542kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████████ | 552kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████████▎ | 563kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████████▋ | 573kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████████ | 583kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████████▎ | 593kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████████▋ | 604kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████████ | 614kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████████▎ | 624kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████████▋ | 634kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████████████ | 645kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████████████▎ | 655kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████████████▋ | 665kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████████████ | 675kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████████████▎ | 686kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████████████▋ | 696kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████████████ | 706kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████████████▎ | 716kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████████████▋ | 727kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████████████ | 737kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████████████▎ | 747kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████████████▋ | 757kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████████████▉ | 768kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████████████████▏ | 778kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████████████████▌ | 788kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████████████████▉ | 798kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████████████████▏ | 808kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████████████████▌ | 819kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████████████████▉ | 829kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████████████████▏ | 839kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████████████████▌ | 849kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████████████████▉ | 860kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████████████████▏ | 870kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████████████████▌ | 880kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████████████████▉ | 890kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████████████████████▏ | 901kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████████████████████▌ | 911kB 2.8MB/s eta 0:00:01\r\u001b[K |█████████████████████████████▉ | 921kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████████████████████▏ | 931kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████████████████████▌ | 942kB 2.8MB/s eta 0:00:01\r\u001b[K |██████████████████████████████▉ | 952kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████████████████████▏| 962kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████████████████████▌| 972kB 2.8MB/s eta 0:00:01\r\u001b[K |███████████████████████████████▉| 983kB 2.8MB/s eta 0:00:01\r\u001b[K |████████████████████████████████| 993kB 2.8MB/s \n", "\u001b[?25h Building wheel for PyDrive (setup.py) ... \u001b[?25l\u001b[?25hdone\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "dMwT7MmVJ8BD", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 196 }, "outputId": "d6ea4dd1-290f-4d11-b93b-375d042acf37" }, "source": [ "## minta modell\n", "\n", "import tensorflow as tf\n", "from tensorflow import keras\n", "import datetime as dt\n", "import os\n", "import numpy as np\n", "from google.colab import files\n", "from google.colab import drive\n", "\n", "# these are all the Google Drive and authentication libraries required\n", "from pydrive.auth import GoogleAuth\n", "from pydrive.drive import GoogleDrive\n", "from google.colab import auth\n", "from oauth2client.client import GoogleCredentials\n", "\n", "# import the CIFAR-10 data then load into TensorFlow datasets\n", "(x_train, y_train), (x_test, y_test) = keras.datasets.cifar10.load_data()\n", "\n", "# the training set with data augmentation\n", "train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(256).shuffle(10000)\n", "train_dataset = train_dataset.map(lambda x, y: (tf.div(tf.cast(x, tf.float32), 255.0), tf.reshape(tf.one_hot(y, 10), (-1, 10))))\n", "train_dataset = train_dataset.map(lambda x, y: (tf.image.central_crop(x, 0.75), y))\n", "train_dataset = train_dataset.map(lambda x, y: (tf.image.random_flip_left_right(x), y))\n", "train_dataset = train_dataset.repeat()\n", "\n", "# the validation set\n", "valid_dataset = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(5000).shuffle(10000)\n", "valid_dataset = valid_dataset.map(lambda x, y: (tf.div(tf.cast(x, tf.float32),255.0), tf.reshape(tf.one_hot(y, 10), (-1, 10))))\n", "valid_dataset = valid_dataset.map(lambda x, y: (tf.image.central_crop(x, 0.75), y))\n", "valid_dataset = valid_dataset.repeat()\n", "\n", "# now the model creation function\n", "def create_model():\n", " model = keras.models.Sequential([\n", " keras.layers.Conv2D(96, 3, padding='same', activation=tf.nn.relu,\n", " kernel_initializer=keras.initializers.VarianceScaling(distribution='truncated_normal'),\n", " kernel_regularizer=keras.regularizers.l2(l=0.001),\n", " input_shape=(24, 24, 3)),\n", " keras.layers.Conv2D(96, 3, 2, padding='same', activation=tf.nn.relu,\n", " kernel_initializer=keras.initializers.VarianceScaling(distribution='truncated_normal'),\n", " kernel_regularizer=keras.regularizers.l2(l=0.001)),\n", " keras.layers.Dropout(0.2),\n", " keras.layers.Conv2D(192, 3, padding='same', activation=tf.nn.relu,\n", " kernel_initializer=keras.initializers.VarianceScaling(distribution='truncated_normal'),\n", " kernel_regularizer=keras.regularizers.l2(l=0.001)),\n", " keras.layers.Conv2D(192, 3, 2, padding='same', activation=tf.nn.relu,\n", " kernel_regularizer=keras.regularizers.l2(l=0.001)),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.Dropout(0.5),\n", " keras.layers.Flatten(),\n", " keras.layers.Dense(256, activation=tf.nn.relu,\n", " kernel_initializer=keras.initializers.VarianceScaling(),\n", " kernel_regularizer=keras.regularizers.l2(l=0.001)),\n", " keras.layers.Dense(10),\n", " keras.layers.Softmax()\n", " ])\n", "\n", " model.compile(optimizer=tf.train.AdamOptimizer(),\n", " loss='categorical_crossentropy',\n", " metrics=['accuracy'])\n", " return model\n", " \n", "# finally create the model\n", "model = create_model()" ], "execution_count": 82, "outputs": [ { "output_type": "stream", "text": [ "Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\n", "170500096/170498071 [==============================] - 2s 0us/step\n" ], "name": "stdout" }, { "output_type": "stream", "text": [ "WARNING: Logging before flag parsing goes to stderr.\n", "W0725 12:44:02.759559 139828683884416 deprecation.py:323] From :21: div (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", "Deprecated in favor of operator or tf.math.divide.\n", "W0725 12:44:03.130238 139828683884416 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", "Call initializer instance with the dtype argument instead of passing it to the constructor\n" ], "name": "stderr" } ] }, { "cell_type": "markdown", "metadata": { "id": "W1nfBsLrIcnB", "colab_type": "text" }, "source": [ "# LINUX-UNIX parancsok elérése" ] }, { "cell_type": "code", "metadata": { "id": "zyC5ztoXIbsr", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 34 }, "outputId": "261f16ae-cce9-430f-9509-433621114d9c" }, "source": [ "# LINUX parancsok közül jópár elérhető pl.: ls, mkdir, rmdir and curl.\n", "# A fuller list of bash commands and functionality available on Google Colaboratory \n", "!cd ..\n", "!ls " ], "execution_count": 80, "outputs": [ { "output_type": "stream", "text": [ "pascal.txt sample_data\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "W4s0Nt0CHk0n", "colab_type": "code", "colab": { "resources": { "http://localhost:8080/nbextensions/google.colab/files.js": { "data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7Ci8vIE1heCBhbW91bnQgb2YgdGltZSB0byBibG9jayB3YWl0aW5nIGZvciB0aGUgdXNlci4KY29uc3QgRklMRV9DSEFOR0VfVElNRU9VVF9NUyA9IDMwICogMTAwMDsKCmZ1bmN0aW9uIF91cGxvYWRGaWxlcyhpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IHN0ZXBzID0gdXBsb2FkRmlsZXNTdGVwKGlucHV0SWQsIG91dHB1dElkKTsKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIC8vIENhY2hlIHN0ZXBzIG9uIHRoZSBvdXRwdXRFbGVtZW50IHRvIG1ha2UgaXQgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBjYWxsCiAgLy8gdG8gdXBsb2FkRmlsZXNDb250aW51ZSBmcm9tIFB5dGhvbi4KICBvdXRwdXRFbGVtZW50LnN0ZXBzID0gc3RlcHM7CgogIHJldHVybiBfdXBsb2FkRmlsZXNDb250aW51ZShvdXRwdXRJZCk7Cn0KCi8vIFRoaXMgaXMgcm91Z2hseSBhbiBhc3luYyBnZW5lcmF0b3IgKG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGJyb3dzZXIgeWV0KSwKLy8gd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlIGFzeW5jaHJvbm91cyBzdGVwcyBhbmQgdGhlIFB5dGhvbiBzaWRlIGlzIGdvaW5nCi8vIHRvIHBvbGwgZm9yIGNvbXBsZXRpb24gb2YgZWFjaCBzdGVwLgovLyBUaGlzIHVzZXMgYSBQcm9taXNlIHRvIGJsb2NrIHRoZSBweXRob24gc2lkZSBvbiBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcCwKLy8gdGhlbiBwYXNzZXMgdGhlIHJlc3VsdCBvZiB0aGUgcHJldmlvdXMgc3RlcCBhcyB0aGUgaW5wdXQgdG8gdGhlIG5leHQgc3RlcC4KZnVuY3Rpb24gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpIHsKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIGNvbnN0IHN0ZXBzID0gb3V0cHV0RWxlbWVudC5zdGVwczsKCiAgY29uc3QgbmV4dCA9IHN0ZXBzLm5leHQob3V0cHV0RWxlbWVudC5sYXN0UHJvbWlzZVZhbHVlKTsKICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5leHQudmFsdWUucHJvbWlzZSkudGhlbigodmFsdWUpID0+IHsKICAgIC8vIENhY2hlIHRoZSBsYXN0IHByb21pc2UgdmFsdWUgdG8gbWFrZSBpdCBhdmFpbGFibGUgdG8gdGhlIG5leHQKICAgIC8vIHN0ZXAgb2YgdGhlIGdlbmVyYXRvci4KICAgIG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSA9IHZhbHVlOwogICAgcmV0dXJuIG5leHQudmFsdWUucmVzcG9uc2U7CiAgfSk7Cn0KCi8qKgogKiBHZW5lcmF0b3IgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGJldHdlZW4gZWFjaCBhc3luYyBzdGVwIG9mIHRoZSB1cGxvYWQKICogcHJvY2Vzcy4KICogQHBhcmFtIHtzdHJpbmd9IGlucHV0SWQgRWxlbWVudCBJRCBvZiB0aGUgaW5wdXQgZmlsZSBwaWNrZXIgZWxlbWVudC4KICogQHBhcmFtIHtzdHJpbmd9IG91dHB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIG91dHB1dCBkaXNwbGF5LgogKiBAcmV0dXJuIHshSXRlcmFibGU8IU9iamVjdD59IEl0ZXJhYmxlIG9mIG5leHQgc3RlcHMuCiAqLwpmdW5jdGlvbiogdXBsb2FkRmlsZXNTdGVwKGlucHV0SWQsIG91dHB1dElkKSB7CiAgY29uc3QgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5wdXRJZCk7CiAgaW5wdXRFbGVtZW50LmRpc2FibGVkID0gZmFsc2U7CgogIGNvbnN0IG91dHB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvdXRwdXRJZCk7CiAgb3V0cHV0RWxlbWVudC5pbm5lckhUTUwgPSAnJzsKCiAgY29uc3QgcGlja2VkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICBpbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHsKICAgICAgcmVzb2x2ZShlLnRhcmdldC5maWxlcyk7CiAgICB9KTsKICB9KTsKCiAgY29uc3QgY2FuY2VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgaW5wdXRFbGVtZW50LnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2FuY2VsKTsKICBjYW5jZWwudGV4dENvbnRlbnQgPSAnQ2FuY2VsIHVwbG9hZCc7CiAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICBjYW5jZWwub25jbGljayA9ICgpID0+IHsKICAgICAgcmVzb2x2ZShudWxsKTsKICAgIH07CiAgfSk7CgogIC8vIENhbmNlbCB1cGxvYWQgaWYgdXNlciBoYXNuJ3QgcGlja2VkIGFueXRoaW5nIGluIHRpbWVvdXQuCiAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9LCBGSUxFX0NIQU5HRV9USU1FT1VUX01TKTsKICB9KTsKCiAgLy8gV2FpdCBmb3IgdGhlIHVzZXIgdG8gcGljayB0aGUgZmlsZXMuCiAgY29uc3QgZmlsZXMgPSB5aWVsZCB7CiAgICBwcm9taXNlOiBQcm9taXNlLnJhY2UoW3BpY2tlZFByb21pc2UsIHRpbWVvdXRQcm9taXNlLCBjYW5jZWxQcm9taXNlXSksCiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdzdGFydGluZycsCiAgICB9CiAgfTsKCiAgaWYgKCFmaWxlcykgewogICAgcmV0dXJuIHsKICAgICAgcmVzcG9uc2U6IHsKICAgICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICAgIH0KICAgIH07CiAgfQoKICBjYW5jZWwucmVtb3ZlKCk7CgogIC8vIERpc2FibGUgdGhlIGlucHV0IGVsZW1lbnQgc2luY2UgZnVydGhlciBwaWNrcyBhcmUgbm90IGFsbG93ZWQuCiAgaW5wdXRFbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKCiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7CiAgICBjb25zdCBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CiAgICBsaS5hcHBlbmQoc3BhbihmaWxlLm5hbWUsIHtmb250V2VpZ2h0OiAnYm9sZCd9KSk7CiAgICBsaS5hcHBlbmQoc3BhbigKICAgICAgICBgKCR7ZmlsZS50eXBlIHx8ICduL2EnfSkgLSAke2ZpbGUuc2l6ZX0gYnl0ZXMsIGAgKwogICAgICAgIGBsYXN0IG1vZGlmaWVkOiAkewogICAgICAgICAgICBmaWxlLmxhc3RNb2RpZmllZERhdGUgPyBmaWxlLmxhc3RNb2RpZmllZERhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbi9hJ30gLSBgKSk7CiAgICBjb25zdCBwZXJjZW50ID0gc3BhbignMCUgZG9uZScpOwogICAgbGkuYXBwZW5kQ2hpbGQocGVyY2VudCk7CgogICAgb3V0cHV0RWxlbWVudC5hcHBlbmRDaGlsZChsaSk7CgogICAgY29uc3QgZmlsZURhdGFQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7CiAgICAgICAgcmVzb2x2ZShlLnRhcmdldC5yZXN1bHQpOwogICAgICB9OwogICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7CiAgICB9KTsKICAgIC8vIFdhaXQgZm9yIHRoZSBkYXRhIHRvIGJlIHJlYWR5LgogICAgbGV0IGZpbGVEYXRhID0geWllbGQgewogICAgICBwcm9taXNlOiBmaWxlRGF0YVByb21pc2UsCiAgICAgIHJlc3BvbnNlOiB7CiAgICAgICAgYWN0aW9uOiAnY29udGludWUnLAogICAgICB9CiAgICB9OwoKICAgIC8vIFVzZSBhIGNodW5rZWQgc2VuZGluZyB0byBhdm9pZCBtZXNzYWdlIHNpemUgbGltaXRzLiBTZWUgYi82MjExNTY2MC4KICAgIGxldCBwb3NpdGlvbiA9IDA7CiAgICB3aGlsZSAocG9zaXRpb24gPCBmaWxlRGF0YS5ieXRlTGVuZ3RoKSB7CiAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWluKGZpbGVEYXRhLmJ5dGVMZW5ndGggLSBwb3NpdGlvbiwgTUFYX1BBWUxPQURfU0laRSk7CiAgICAgIGNvbnN0IGNodW5rID0gbmV3IFVpbnQ4QXJyYXkoZmlsZURhdGEsIHBvc2l0aW9uLCBsZW5ndGgpOwogICAgICBwb3NpdGlvbiArPSBsZW5ndGg7CgogICAgICBjb25zdCBiYXNlNjQgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgY2h1bmspKTsKICAgICAgeWllbGQgewogICAgICAgIHJlc3BvbnNlOiB7CiAgICAgICAgICBhY3Rpb246ICdhcHBlbmQnLAogICAgICAgICAgZmlsZTogZmlsZS5uYW1lLAogICAgICAgICAgZGF0YTogYmFzZTY0LAogICAgICAgIH0sCiAgICAgIH07CiAgICAgIHBlcmNlbnQudGV4dENvbnRlbnQgPQogICAgICAgICAgYCR7TWF0aC5yb3VuZCgocG9zaXRpb24gLyBmaWxlRGF0YS5ieXRlTGVuZ3RoKSAqIDEwMCl9JSBkb25lYDsKICAgIH0KICB9CgogIC8vIEFsbCBkb25lLgogIHlpZWxkIHsKICAgIHJlc3BvbnNlOiB7CiAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgIH0KICB9Owp9CgpzY29wZS5nb29nbGUgPSBzY29wZS5nb29nbGUgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYiA9IHNjb3BlLmdvb2dsZS5jb2xhYiB8fCB7fTsKc2NvcGUuZ29vZ2xlLmNvbGFiLl9maWxlcyA9IHsKICBfdXBsb2FkRmlsZXMsCiAgX3VwbG9hZEZpbGVzQ29udGludWUsCn07Cn0pKHNlbGYpOwo=", "ok": true, "headers": [ [ "content-type", "application/javascript" ] ], "status": 200, "status_text": "" } }, "base_uri": "https://localhost:8080/", "height": 40 }, "outputId": "cc8181b5-26d6-48fe-8c7f-5dc7813f457f" }, "source": [ "## file feltöltés kiválasztással 1\n", "from google.colab import files\n", "uploaded = files.upload()\n", "\n", "\n", "## file feltöltés kiválasztással 2\n", "from google.colab import files\n", "uploaded = files.upload()\n", "for fn in uploaded.keys():\n", " print('User uploaded file \"{name}\" with length {length} bytes'.format(\n", " name=fn, length=len(uploaded[fn])))" ], "execution_count": 81, "outputs": [ { "output_type": "display_data", "data": { "text/html": [ "\n", " \n", " \n", " Upload widget is only available when the cell has been executed in the\n", " current browser session. Please rerun this cell to enable.\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "S1T2CkUEJlbm", "colab_type": "code", "colab": {} }, "source": [ "##file feltöltés közvetlen file elériut meadással\n", "files.download(\"downloaded_weights.12-1.05.hdf5\")\n", "\n", "\n", "\n", "## google drive elérés\n", "from google.colab import drive\n", "drive.mount('/content/drive') ## a megjelenő ablakban azonosito megadása szükséges\n", "\n", "\n", "\n", "with open('/content/drive/My Drive/foo.txt', 'w') as f:\n", " f.write('Hello Google Drive!')\n", "!cat /content/drive/My\\ Drive/foo.txt\n", "\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "V4HCdV47MW_h", "colab_type": "code", "colab": {} }, "source": [ "## file letöltés\n", "from google.colab import files\n", "\n", "with open('example.txt', 'w') as f:\n", " f.write('some content') ### minta file létrehozása\n", "\n", "files.download('example.txt') # létrehozott file letöltése\n" ], "execution_count": 0, "outputs": [] } ] }