From 97d4e400fed9fc24034c31a845cd55ef8cc5cf32 Mon Sep 17 00:00:00 2001 From: Ryszard Staruch Date: Fri, 17 May 2024 17:12:00 +0200 Subject: [PATCH] Update notebooks --- 04_zadania.ipynb | 2 +- 04_zadania_helpful_codeblocks.ipynb | 25 ++++++++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/04_zadania.ipynb b/04_zadania.ipynb index 038bca5..da83978 100644 --- a/04_zadania.ipynb +++ b/04_zadania.ipynb @@ -12,7 +12,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Zadanie 1 (150 punktów)\n", + "#### Zadanie 1 (170 punktów)\n", "\n", "Na podstawie zbioru danych https://huggingface.co/datasets/mteb/tweet_sentiment_extraction stwórz model bazujący na dwukierunkowej sieci neuronowej LSTM (proszę skorzystać z gotowego modułu LSTM w bibliotece torch) do klasyfikacji sentymentu tekstów w postaci tweetów. Można skorzystać z gotowych embeddingów lub wytrenować własne - względem uznania. Metody filtrowania tekstów (często zawierają wiele różnych znaków/symboli, które mogą mieć znaczenie) również należą do Państwa zadania. \n", "\n", diff --git a/04_zadania_helpful_codeblocks.ipynb b/04_zadania_helpful_codeblocks.ipynb index aa13f54..cc10468 100644 --- a/04_zadania_helpful_codeblocks.ipynb +++ b/04_zadania_helpful_codeblocks.ipynb @@ -139,11 +139,11 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ - "lstm_layer = torch.nn.LSTM(5, 5, 2, batch_first=True, bidirectional=True)\n", + "lstm_layer = torch.nn.LSTM(5, 5, 30, batch_first=True, bidirectional=True)\n", "\n", "embedded_inputs = embedding(padded_input)\n", "x = torch.nn.utils.rnn.pack_padded_sequence(embedded_inputs, lengths, batch_first=True, enforce_sorted=False)\n", @@ -151,25 +151,32 @@ "output, _ = torch.nn.utils.rnn.pad_packed_sequence(output, batch_first=True)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Zmienna hidden zawiera wszystkie ukryte stany na przestrzeni wszystkich warstw, natomiast zmienna output zawiera jedynie stany w ostatniej warstwie" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Wartościami, które należy wykorzystać do klasyfikacji to (jedna z dwóch opcji):\n", - "* konkatenacja ostatniego i przedostatniego elementu z warstwy hidden (sieć jest dwukierunkowa, więc chcemy się dostać do stanów z ostatniej warstwy jednego oraz drugiego kierunku)\n", + "* konkatenacja ostatniego i przedostatniego elementu ze zmiennej hidden (sieć jest dwukierunkowa, więc chcemy się dostać do stanów z ostatniej warstwy jednego oraz drugiego kierunku)\n", "* pierwszy element dla każdego przykładu ze zmiennej out (tam jest automatycznie skonkatenowany output dla obu kierunków, dlatego mamy na końcu rozmiar 10)" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "torch.Size([6, 3, 5])\n", + "torch.Size([60, 3, 5])\n", "torch.Size([3, 7, 10])\n" ] } @@ -178,6 +185,14 @@ "print(hidden.shape)\n", "print(output.shape)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "torch.Size([6, 3, 5])\n", + "torch.Size([3, 7, 10])" + ] } ], "metadata": {