diff --git a/PythonAI/JupyterLab/PythonAI_5.ipynb b/PythonAI/JupyterLab/PythonAI_5.ipynb index 444af81..021835d 100644 --- a/PythonAI/JupyterLab/PythonAI_5.ipynb +++ b/PythonAI/JupyterLab/PythonAI_5.ipynb @@ -70,7 +70,9 @@ { "cell_type": "markdown", "id": "9d98ba73-f954-4a6a-ac09-3a6b1afa58ce", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "# Kod" ] @@ -1921,10 +1923,21 @@ }, { "cell_type": "markdown", - "id": "cd20cae1-be7f-49ee-b112-15f4cd9cfc6f", - "metadata": {}, + "id": "745695d5-bf7f-4113-82cc-d387b772cc3e", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, + "source": [ + "# CNN - Convolutional Neural Network" + ] + }, + { + "cell_type": "markdown", + "id": "4cf99b8e-5539-4814-9a86-9ea4199060ab", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ - "# CNN - Convolutional Neural Network\n", "## zalety \n", "- analiza przestrzenna - nie spłaszczamy obrazów\n", "- wydajna - \n", @@ -1932,11 +1945,11 @@ ] }, { - "cell_type": "code", - "execution_count": 48, - "id": "0c993d2e-5730-4084-a3c1-1bc001041ba1", - "metadata": {}, - "outputs": [], + "cell_type": "markdown", + "id": "2d041872-a762-47a9-881c-7cf2d4a35152", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "import tensorflow as tf" ] @@ -1944,7 +1957,9 @@ { "cell_type": "markdown", "id": "ca48ef25-a03a-4fcc-9595-a3bd6a958b21", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "## Pobierz obrazy" ] @@ -2739,14 +2754,16 @@ { "cell_type": "markdown", "id": "ec06874f-c48a-43ce-b44e-364e4ed5ee37", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "# RNN - Recurrent Neural Network" ] }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 135, "id": "9bde4f30-f26c-4b37-bfa6-8b64460fe13d", "metadata": {}, "outputs": [], @@ -2758,7 +2775,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 136, "id": "d2e9da87-1912-466f-b902-e45130d8fd32", "metadata": {}, "outputs": [], @@ -2768,9 +2785,19 @@ "sequence_length = 100" ] }, + { + "cell_type": "markdown", + "id": "5fc72c05-24ef-415d-a8d5-63ec1f3a93e6", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, + "source": [ + "## SimpleRNN " + ] + }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 137, "id": "88156e8c-3c2a-467e-a018-a09c0f292de0", "metadata": {}, "outputs": [], @@ -2783,18 +2810,18 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 138, "id": "f976e119-8888-4316-a1b8-2352f74c42e8", "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
Model: \"sequential_7\"\n",
+       "
Model: \"sequential_16\"\n",
        "
\n" ], "text/plain": [ - "\u001b[1mModel: \"sequential_7\"\u001b[0m\n" + "\u001b[1mModel: \"sequential_16\"\u001b[0m\n" ] }, "metadata": {}, @@ -2806,11 +2833,11 @@ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
        "┃ Layer (type)                     Output Shape                  Param # ┃\n",
        "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
-       "│ embedding_2 (Embedding)         │ ?                      │   0 (unbuilt) │\n",
+       "│ embedding_11 (Embedding)        │ ?                      │   0 (unbuilt) │\n",
        "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ simple_rnn_2 (SimpleRNN)        │ ?                      │   0 (unbuilt) │\n",
+       "│ simple_rnn_8 (SimpleRNN)        │ ?                      │   0 (unbuilt) │\n",
        "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-       "│ dense_6 (Dense)                 │ ?                      │   0 (unbuilt) │\n",
+       "│ dense_13 (Dense)                │ ?                      │   0 (unbuilt) │\n",
        "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
        "
\n" ], @@ -2818,11 +2845,11 @@ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\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", - "│ embedding_2 (\u001b[38;5;33mEmbedding\u001b[0m) │ ? │ \u001b[38;5;34m0\u001b[0m (unbuilt) │\n", + "│ embedding_11 (\u001b[38;5;33mEmbedding\u001b[0m) │ ? │ \u001b[38;5;34m0\u001b[0m (unbuilt) │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ simple_rnn_2 (\u001b[38;5;33mSimpleRNN\u001b[0m) │ ? │ \u001b[38;5;34m0\u001b[0m (unbuilt) │\n", + "│ simple_rnn_8 (\u001b[38;5;33mSimpleRNN\u001b[0m) │ ? │ \u001b[38;5;34m0\u001b[0m (unbuilt) │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ dense_6 (\u001b[38;5;33mDense\u001b[0m) │ ? │ \u001b[38;5;34m0\u001b[0m (unbuilt) │\n", + "│ dense_13 (\u001b[38;5;33mDense\u001b[0m) │ ? │ \u001b[38;5;34m0\u001b[0m (unbuilt) │\n", "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" ] }, @@ -2876,7 +2903,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 139, "id": "6b024476-a946-4672-b1e9-8bb0de26c8e8", "metadata": {}, "outputs": [], @@ -2891,70 +2918,13 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 140, "id": "862e9746-1f60-4036-b007-13240b285e2f", "metadata": {}, "outputs": [], "source": [ "text = \"\"\"\n", - "Pewnemu bogatemu panu zachorowała żona, a kiedy poczuła, że nadszedł jej koniec, zawołała swoją jedyną córeczkę do łóżka i rzekła: \"Drogie dziecko, bądź pobożna i dobra, a dobry Bóg będzie z tobą. Będę patrzyła na ciebie z nieba i będę przy tobie.\" Potem zamknęła oczy i odeszła. Dziewczynka codziennie chodziła na grób matki, płakała, była pobożna i dobra. Kiedy nadeszła zima, śnieg przykrył białą chustą grób, a kiedy wiosenne słońce ją zdjęło, pan wziął sobie drugą żonę.\n", - "Kobieta zabrała do domu dwie córki, które z twarzy były śniade i piękne, ale w sercach szpetne i czarne. Dla biednej pasierbicy nastał zły czas.\n", - "\"Czy ta głupia gęś ma siedzieć z nami w izbie,\" mówiły, \"Kto chce jeść chleb, musi na niego zasłużyć. Precz do kuchni z tą dziewką!\"\n", - "Zabrały jej piękne suknie i założyły stary szary fartuch i drewniane buty. \"Popatrzcie no na dumną księżniczkę, jaka umorusana!\" wołały, śmiały się i poprowadziły do kuchni. A tam od rana do wieczora musiała ciężko pracować i wstawać przed dniem, nosić wodę, rozpalać ogień, gotować i myć. Siostry nie szczędziły jej żadnej przykrości, szydziły z niej, sypały groch i soczewicę do popiołu, tak że musiała siedzieć i zbierać. Wieczorem, zmęczona po ciężkiej pracy nie szła do łóżka, lecz kładła się na popielisko obok pieca. A ponieważ ciągle była w kurzu i brudzie nazwano ją Kopciuszkiem.\n", - "Zdarzyło się, że ojciec szedł na targ. Zapytał wtedy swoje pasierbice, co ma im przynieść. \"Piękne suknie!,\" powiedziała jedna; \"Perły i drogie kamienie,\" druga. - \"A ty, Kopciuszku,\" powiedział, \"co chcesz mieć?\" -\"Ojcze, pierwszą gałązkę, która wam kapelusz na waszej drodze do domu z głowy strąci, ułamcie ją dla mnie.\"\n", - "Kupił więc obu pasierbicom piękne suknie, perły i drogie kamienie, a kiedy w drodze do domu jechał swym koniem przez zielony gaj, zaczepiła go gałązka leszczyny i strąciła mu kapelusz. Ułamał ją więc i zabrał ze sobą. Kiedy przybył do domu, dał pasierbicom, czego sobie życzyły, a kopciuszkowi gałązkę krzewu leszczyny. Kopciuszek podziękował mu, poszedł na grób matki i zasadził na nim gałązkę. Płakał tak bardzo, że łzy kapały na nią i ją zraszały. Gałązka urosła i stała się pięknym drzewem. Kopciuszek chodził pod nie co trzy dni, płakał i modlił się, a za każdym razem na drzewie siadał biały ptaszek i kiedy Kopciuszek wymawiał swoje życzenie, zrzucał mu czego chciał.\n", - "Zdarzyło się też, że król wyprawiał ucztę, która miała trwać trzy dni. Zaprosił na nią wszystkie panny w kraju, aby jego syn znalazł sobie narzeczoną. Gdy przyrodnie siostry usłyszały, że i one mają się zjawić, były dobrej myśli, zawołały kopciuszka i powiedziały: \"Uczesz nam włosy, wyszczotkuj buty i zapnij klamerki, idziemy na Wesele na zamek króla.\"\n", - "Kopciuszek usłuchał, ale płakał, bo też chciał iść w tan na wesele i poprosił macochę, by raczyła jej na to pozwolić.\n", - "\"Ty kopciuszku,\" rzekła, \"pełna jesteś kurzu i brudu... i ty chcesz iść na wesele? Nie masz sukien ni butów, a chcesz tańczyć!\" A kiedy kopciuszek przestał prosić, powiedziała: \"Wysypałam ci miskę soczewicy do popiołu. Jeśli pozbierasz ją w dwie godziny, możesz z nami pójść\"\n", - "Dziewczynka wyszła przez tylne drzwi do ogrodu i zawołała: \"Łaskawe gołąbki, turkaweczki, wszystkie ptaszki na niebie, przylećcie by pomóc mi zbierać.\n", - "Dobre do garnuszka,\n", - "a złe do brzuszka\"\n", - "I wtedy przez kuchenne okno wleciały dwa białe gołąbki, potem turkaweczki, aż wreszcie furknęły wszystkie ptaszki na niebie wlatując do kuchni, usiadły wokół popieliska, że aż się od nich zaroiło. A gołąbki kiwały swoimi główkami i zaczęły robić pik, pik, pik, a wtedy i wszystkie inne ptaszki zaczęły robić pik, pik, pik i zbierały dobre ziarenka do miski. I nie minęła nawet godzina a wszystkie były gotowe i odleciały. Dziewczynka zaniosła miskę do macochy, cieszyła się i wierzyła, że będzie mogła pójść na wesele. Ale macocha powiedziała: \"Nie kopciuszku, nie masz sukien i nie umiesz tańczyć; tylko by się z ciebie śmiali.\"\n", - "Wtedy kopciuszek zapłakał, a macocha powiedziała \"Jeśli w ciągu godziny wybierzesz z popiołu dwie miski pełne soczewicy, możesz pójść z nami, i pomyślała; \"Nigdy jej się to nie uda.\" A kiedy wysypała dwie miski soczewicy na popielisko, dziewczynka wyszła przez tylne drzwi do ogrodu i zawołała: \"Łaskawe gołąbki, turkaweczki, wszystkie ptaszki na niebie, przylećcie by pomóc mi zbierać.\n", - "Dobre do garnuszka,\n", - "a złe do brzuszka\"\n", - "I wtedy przez kuchenne okno wleciały dwa białe gołąbki, potem turkaweczki, aż wreszcie furknęły wszystkie ptaszki na niebie wlatując do kuchni, usiadły wokół popieliska, że aż się od nich zaroiło. A gołąbki kiwały swoimi główkami i zaczęły robić pik, pik, pik, a wtedy i wszystkie inne ptaszki zaczęły robić pik, pik, pik i zbierały dobre ziarenka do miski. I zanim minęło pół godziny wszystkie były gotowe i odleciały. Dziewczynka zaniosła miskę do macochy, cieszyła się i wierzyła, że będzie mogła pójść na wesele. Ale macocha powiedziała: \"Nie pomoże ci to. Nie pójdziesz z nami, bo nie masz sukien i nie umiesz tańczyć; wstydziłybyśmy się ciebie.\" Odwróciła się do Kopciuszka plecami i pospieszyła za swymi córkami.\n", - "Kiedy nikogo nie było już w domu, kopciuszek poszedł na grób swojej matki pod leszczynowym drzewem i zawołał:\n", - "\"Drzewko, drzewko zrzuć na mnie oto\n", - "srebro i złoto\"\n", - "A ptaszek zrzucił jej suknię ze srebra i złota i pantofle przetykane jedwabiem i srebrem. W pośpiechu kopciuszek założył suknię i poszedł na wesele. Jego siostry i macocha nie poznały go i myślały, że to królewna z dalekiego kraju, tak piękna była w swej złotej sukni. O kopciuszku nawet nie pomyślały, o Kopciuszku, który siedział w domu, w brudzie i wyszukiwał soczewicy w popiele. Królewicz podszedł do niej, wziął ją za rękę i tańczył z nią. Nie chciał tańczyć z nikim innym trzymając ją cały czas za rękę, a kiedy podszedł ktoś by poprosić ją do tańca, mówił: \"To moja tancerka.\"\n", - "Kopciuszek tańczył do wieczora aż w końcu chciał iść do domu. Ale królewicz powiedział: \"Pójdę z Tobą i odprowadzę cię,\" bo chciał zobaczyć, czyja była tak piękna dziewczyna. Kopciuszek jednak uciekł mu i wskoczył do gołębnika. Królewicz czekał, aż przyszedł ojciec kopciuszka i powiedział mu, że pewna nieznajoma dziewczyna wskoczyła do gołębnika. Stary pomyślał: \"Czy to był mój Kopciuszek?\" i musieli mu przynieść siekierę i bosak, aby mógł przeciąć gołębnik na pół. Lecz w środku nie było nikogo. Gdy weszli do domu, Kopciuszek leżał w popiele w swoim brudnym ubraniu, a w kominku paliła się ciemna olejowa lampka, Kopciuszek bowiem wyskoczył z tyłu gołębnika i pobiegł do leszczynowego drzewa. Tam zdjął swe piękne suknie i położył na grób, a ptak je zabrał. Potem położył się w swych szarych rzeczach na kuchennym popielisku.\n", - "Następnego dnia, gdy uczta znowu się zaczynała, a rodzice i przyrodnie siostry już odeszły, kopciuszek podszedł do leszczyny i rzekł:\n", - "\"Drzewko, drzewko zrzuć na mnie oto\n", - "srebro i złoto\"\n", - "A ptak zrzucił suknię jeszcze bardziej przepyszną niż poprzedniego dnia. Kiedy ukazał się na weselu w tej sukni, zdziwił się każdy jego urodą. Królewicz czekał aż przyjdzie by wziąć Kopciuszka za rękę i tańczyć tylko z nim, a kiedy podszedł ktoś by poprosić go do tańca, mówił: \"To moja tancerka.\" Kiedy przyszedł zaś wieczór, Kopciuszek chciał odejść, lecz królewicz szedł za nim, bo chciał zobaczyć do jakiego pójdzie domu. Kopciuszek jednak szybko skoczył do przodu i pobiegł do ogrodu za domem, w którym stało piękne wielkie drzewo, a na nim wisiały wspaniałe gruszki. Wspiął się na nie tak zwinnie, jakby to wiewiórka wiła się wśród gałęzi, a królewicz nie wiedział, gdzie Kopciuszek poszedł. Czekał jednak, aż zjawił się ojciec i rzekł do niego: \"Ta nieznajoma dziewczyna uciekła mi i - jak sądzę - wskoczyła na tę gruszę. Ojciec pomyślał: \"Czy to mój Kopciuszek?\" Kazał sobie wnet przynieść siekierę i ściął drzewo, lecz nie było na nim nikogo.\n", - "Gdy poszli do kuchni, Kopciuszek jak zawsze leżał na popielisku, bo zeskoczył był z drugiej strony drzewa, ptaszkowi na leszczynowym drzewie oddał piękne suknie i włożył swój szary fartuch.\n", - "Trzeciego dnia, gdy rodzice i przyrodnie siostry już poszli, Kopciuszek poszedł na grób matki i rzekł do drzewka:\n", - "\"Drzewko, drzewko zrzuć na mnie oto\n", - "srebro i złoto\"\n", - "A ptaszek zrzucił mu suknię, która była taka wspaniała i błyszcząca, jakiej nie miał jeszcze nikt, a pantofle całe były ze złota. Kiedy w tej sukni przyszła na wesele, nikt z zachwytu głosu z siebie dobyć nie mógł. Królewicz tańczył tylko z Kopciuszkiem, a kiedy podchodził ktoś, by poprosić kopciuszka do tańca, mówił: \"To moja tancerka.\"\n", - "Kiedy nadszedł wieczór, Kopciuszek chciał odejść, a królewicz chciał go odprowadzić, lecz dziewczyna tak szybko znikła mu z oczu, że nie mógł iść za nią. Królewicz obmyślił jednak podstęp i kazał wysmarować całe schody smołą. Kiedy kopciuszek szedł po nich, do smoły przykleił się lewy pantofel. Królewicz podniósł go. Był mały, delikatny i cały ze złota. Rankiem podszedł do człowieka, którego spotykał co wieczór i rzekł: \"żadna inna nie może zostać moją żoną niż ta, na którą będzie pasował ten złoty bucik.\" Ucieszyły się obie siostry, bo miały piękne nogi.\n", - "Najstarsza poszła z butem do izby i chciała go przymierzyć, a była przy tym matka. Nie mogła jednak zmiścić wielkiego palca, bo but był na nią za mały. Wtedy matka podała jej nóż i rzekła: \"Odetnij tego palca: Kiedy będziesz królową, nie będziesz musiała chodzić pieszo.\" Dziewczyna obcięła palca, wcisnęła stopę w buta, a z bólu zacisnęła usta i wyszła do królewicza. Potem wziął ją jako narzeczoną na konia i odjechał. Musieli przejechać koło grobu, gdzie siedziały dwa gołąbki na leszczynowym drzewku i wołały:\n", - "Pewnie wzrok z ciebie drwi,\n", - "Bo buty pełne są krwi.\n", - "Oczy oszukać się dały,\n", - "Bo but jest dużo za mały.\n", - "Prawdziwa panna jest w domu\n", - "Nieznana jeszcze nikomu.\n", - "Spojrzał więc na nogę i zobaczył, jak tryska krew. Zawrócił konia i odwiózł fałszywą narzeczoną do domu. Druga siostra musiała przymierzyć buta. Poszła więc do izby, szczęśliwa włożyła palce do buta, lecz pięta była za duża. Wtedy matka podała jej nóż i rzekła: \"Odetnij kawałek pięty: Kiedy będziesz królową, nie będziesz musiała chodzić pieszo.\" Dziewczyna obcięła kawałek pięty, wcisnęła stopę w buta, a z bólu zacisnęła usta i wyszła do królewicza.\n", - "On zaś wziął ją jako narzeczoną na konia i odjechał. Kiedy przejeżdżali obok leszczynowego drzewka, dwa gołąbki zawołały:\n", - "\"Pewnie wzrok z ciebie drwi,\n", - "Bo buty pełne są krwi.\n", - "Oczy oszukać się dały,\n", - "Bo but jest dużo za mały.\n", - "Prawdziwa panna jest w domu\n", - "Nieznana jeszcze nikomu.\"\n", - "Spojrzał na jej stopę i zobaczył, jak krew tryska z buta, a po białych pończochach sączy się do góry i barwi je na czerwono. Zawrócił więc konia i odwiózł fałszywą narzeczoną do domu.\n", - "\"Nie o nią mi chodziło,\" powiedział., \"Czy macie jeszcze jakąś córkę?\"\n", - "\"Nie,\" odrzekł pan, \"Jest jeszcze tylko mój mały lichy Kopciuszek po mojej zmarłej żonie, ale on na pewno nie jest tą panną.\"\n", - "Królewicz powiedział, że mają ją przysłać, a matka odpowiedziała: \"Och nie, ona jest zbyt brudna i nie może się taka pokazać.\" Ale on chciał koniecznie ją zobaczyć i musieli ją zawołać. Kopciuszek umył sobie najpierw ręce i twarz, a potem poszedł pokłonić się królewiczowi, który podał mu złoty but. Potem usiadł na zydelku, zdjął ciężkiego drewniaka, i włożył pantofelek, który leżał jak ulał. A kiedy wstał, królewicz ujrzał jego twarz i poznał piękną dziewczynę, która z nim tańczyła i zawołał: \"Oto prawdziwa panna!\"\n", - "Macocha i obie siostry wystraszyły się i zbladły ze złości. A on wziął Kopciuszka na konia i odjechał z nim. Kiedy przejeżdżali obok leszczynowego drzewka, zawołały dwa gołąbki:\n", - "\"Widoku nic nie psuje\n", - "Bo bucik pięknie pasuje\n", - "Nie barwi go krew czerwona,\n", - "Bo panną młodą zaprawdę jest ona.\"\n", - "A kiedy to zawołały, usiadły Kopciuszkowi na ramionach, jeden z prawej, a drugi z lewej strony i tak zostały.\n", - "Kiedy miał odbyć się ślub z królewiczem, przyszły fałszywe siostry i chciały się przypodobać, by mieć swój udział w szczęściu Kopciuszka. Kiedy narzeczeni wchodzili do kościoła, starsza była z prawej strony, a młodsza z lewej. I wtedy gołębie wydziobały każdej po tym właśnie oku. Kiedy zaś wychodzili, starsza była z lewej a młodsza z prawej, gołębie wydziobały każdej po drugim oku. I tak zostały ukarane ślepotą po kres życia za swe zło i fałsz.\n", + "Ala ma kota a kot ma Alę\n", "\"\"\"" ] }, @@ -3512,16 +3482,265 @@ }, { "cell_type": "markdown", - "id": "ca748b23-1558-41f1-8473-76369c3ed888", - "metadata": {}, + "id": "94347e1d-d0a3-4649-aa44-f0e0e7d3b4aa", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ - "#" + "## LSTM" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "id": "7830ff1f-c5b3-49f6-9152-43c2f8254d32", + "metadata": {}, + "outputs": [], + "source": [ + "from tensorflow.keras.datasets import imdb" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "id": "7d9e6415-4781-4f3a-bc71-984305c06852", + "metadata": {}, + "outputs": [], + "source": [ + "(X_train, y_train),(X_test, y_test) = imdb.load_data(num_words = vocab_size)" + ] + }, + { + "cell_type": "markdown", + "id": "efab5071-ae49-4cc9-a5ab-eb51a2dff6f4", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, + "source": [ + "### stwórz model " + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "id": "1d00cce2-55fc-47db-bf74-92cbe1a7199d", + "metadata": {}, + "outputs": [], + "source": [ + "from tensorflow.keras.layers import LSTM" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "id": "bc33c8ba-e145-4cf4-84f8-b9fd8711fdea", + "metadata": {}, + "outputs": [], + "source": [ + "model = Sequential()\n", + "model.add(Embedding(vocab_size, embedding_dim, input_length=sequence_length))\n", + "model.add(LSTM(128, return_sequences=False))\n", + "model.add(Dense(1,activation='sigmoid'))" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "id": "51e02139-de8e-443b-aa6d-81d0310bffe3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
Model: \"sequential_18\"\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1mModel: \"sequential_18\"\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+       "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+       "│ embedding_13 (Embedding)        │ ?                      │   0 (unbuilt) │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ lstm_3 (LSTM)                   │ ?                      │   0 (unbuilt) │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dense_15 (Dense)                │ ?                      │   0 (unbuilt) │\n",
+       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+       "
\n" + ], + "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", + "│ embedding_13 (\u001b[38;5;33mEmbedding\u001b[0m) │ ? │ \u001b[38;5;34m0\u001b[0m (unbuilt) │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ lstm_3 (\u001b[38;5;33mLSTM\u001b[0m) │ ? │ \u001b[38;5;34m0\u001b[0m (unbuilt) │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_15 (\u001b[38;5;33mDense\u001b[0m) │ ? │ \u001b[38;5;34m0\u001b[0m (unbuilt) │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Total params: 0 (0.00 B)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Trainable params: 0 (0.00 B)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "model.compile(loss=\"binary_crossentropy\", optimizer='adam',metrics=['accuracy'])\n", + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "id": "14a8c7aa-c497-496a-b1fc-24b0fc1b1a26", + "metadata": {}, + "outputs": [], + "source": [ + "X_train = pad_sequences(X_train, maxlen=sequence_length)\n", + "X_test = pad_sequences(X_test, maxlen=sequence_length)" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "id": "4fab2fe0-4668-4b5f-a871-302287768791", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/2\n", + "\u001b[1m782/782\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m89s\u001b[0m 113ms/step - accuracy: 0.9350 - loss: 0.1678 - val_accuracy: 0.8236 - val_loss: 0.4499\n", + "Epoch 2/2\n", + "\u001b[1m782/782\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m87s\u001b[0m 112ms/step - accuracy: 0.9658 - loss: 0.1002 - val_accuracy: 0.8160 - val_loss: 0.6176\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 166, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=2, batch_size=32)" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "id": "69257f44-3dc9-4e8c-8bb5-2d6896065cec", + "metadata": {}, + "outputs": [], + "source": [ + "def predict_sentiment(text, model, tokenizer, sequence_length=100):\n", + " # Zamiana tekstu na sekwencję liczb\n", + " seq = tokenizer.texts_to_sequences([text])\n", + "\n", + " # Uzupełnienie zerami\n", + " padded = tf.keras.preprocessing.sequence.pad_sequences(seq, maxlen=sequence_length)\n", + "\n", + " # Przewidywanie\n", + " pred = model.predict(padded, verbose=0)[0][0]\n", + "\n", + " # Interpretacja\n", + " sentiment = \"Pozytywny 😊\" if pred > 0.5 else \"Negatywny 😠\"\n", + " print(f\"Tekst: {text}\")\n", + " print(f\"Przewidziany sentyment: {sentiment} (prawdopodobieństwo: {pred:.2f})\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "id": "5f8e74af-7bb8-4376-8dcd-774f65dff42f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tekst: Worst movie I've ever seen\n", + "Przewidziany sentyment: Pozytywny 😊 (prawdopodobieństwo: 0.74)\n" + ] + } + ], + "source": [ + "\n", + "predict_sentiment(\"Worst movie I've ever seen\",model,tokenizer)" ] }, { "cell_type": "code", "execution_count": null, - "id": "c2fa8be6-540d-49cc-aff4-f891d59c6a95", + "id": "7ec026ce-7cfc-4d6b-8a14-3f6a319942d9", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "63e02f00-0b8d-4b22-b836-f2d216a3fc47", + "metadata": {}, + "source": [ + "# test\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4fd6d724-a6e1-4656-8513-bc2bf0fba3f3", "metadata": {}, "outputs": [], "source": [] @@ -3529,7 +3748,31 @@ { "cell_type": "code", "execution_count": null, - "id": "4fab2fe0-4668-4b5f-a871-302287768791", + "id": "e97d8085-e4f9-4ce1-9984-a4abb0404676", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "54e83372-ead5-47f4-bb35-31b15e6a9ff6", + "metadata": {}, + "source": [ + "# next " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "06875691-a3c7-42a1-8389-7e92aa595b5e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "276f9b53-a41e-4f05-9bfb-b2d0e3b950af", "metadata": {}, "outputs": [], "source": []