TGViewer
Data Science & Machine Learning Data Science & Machine Learning @datasciencefun · 77.8K subscribers
Post #1765 5.42K
Let's start with Day 20 today

30 Days of Data Science Series: https://t.me/datasciencefun/1708

Let's learn about Recurrent Neural Networks (RNNs)

#### Concept
Recurrent Neural Networks (RNNs) are a class of neural networks designed to recognize patterns in sequences of data such as time series, natural language, or video frames. Unlike traditional neural networks, RNNs have connections that form directed cycles, allowing them to maintain a hidden state that can capture information about previous inputs.

#### Key Features of RNNs
1. Sequential Data Processing: Designed to handle sequences of varying lengths.
2. Hidden State: Maintains information about previous elements in the sequence.
3. Shared Weights: Uses the same weights across all time steps, reducing the number of parameters.
4. Vanishing/Exploding Gradient Problem: Can struggle with long-term dependencies due to these issues.

#### Key Steps
1. Input and Hidden States: Each input element is processed along with the hidden state from the previous time step.
2. Recurrent Connections: The hidden state is updated recursively.
3. Output Layer: Produces predictions based on the hidden state at each time step.

#### Implementation

Let's implement a simple RNN using Keras to predict the next value in a sequence of numbers.

##### Example
# Import necessary libraries
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import SimpleRNN, Dense
from sklearn.preprocessing import MinMaxScaler

# Generate synthetic sequential data
data = np.sin(np.linspace(0, 100, 1000))

# Prepare the dataset
def create_dataset(data, time_step=1):
X, y = [], []
for i in range(len(data) - time_step - 1):
a = data[i:(i + time_step)]
X.append(a)
y.append(data[i + time_step])
return np.array(X), np.array(y)

# Scale the data
scaler = MinMaxScaler(feature_range=(0, 1))
data = scaler.fit_transform(data.reshape(-1, 1))

# Create the dataset with time steps
time_step = 10
X, y = create_dataset(data, time_step)
X = X.reshape(X.shape[0], X.shape[1], 1)

# Split the data into train and test sets
train_size = int(len(X) * 0.8)
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]

# Create the RNN model
model = Sequential([
SimpleRNN(50, input_shape=(time_step, 1)),
Dense(1)
])

# Compile the model
model.compile(optimizer='adam', loss='mean_squared_error')

# Train the model
model.fit(X_train, y_train, epochs=50, batch_size=1, verbose=1)

# Evaluate the model
loss = model.evaluate(X_test, y_test, verbose=0)
print(f"Test Loss: {loss}")

# Predict the next value in the sequence
last_sequence = X_test[-1].reshape(1, time_step, 1)
predicted_value = model.predict(last_sequence)
predicted_value = scaler.inverse_transform(predicted_value)
print(f"Predicted Value: {predicted_value[0][0]}")

#### Explanation of the Code

1. Data Generation: We generate synthetic sequential data using a sine function.
2. Dataset Preparation: We create sequences of 10 time steps to predict the next value.
3. Data Scaling: Normalize the data to the range [0, 1] using MinMaxScaler.
4. Dataset Creation: Create the dataset with input sequences and corresponding labels.
5. Train-Test Split: Split the data into training and test sets.
6. Model Creation:
- SimpleRNN Layer: A recurrent layer with 50 units.
- Dense Layer: A fully connected layer with a single output neuron for regression.
7. Model Compilation: We compile the model with the Adam optimizer and mean squared error loss function.
8. Model Training: Train the model for 50 epochs with a batch size of 1.
9. Model Evaluation: Evaluate the model on the test set and print the loss.
10. Prediction: Predict the next value in the sequence using the last sequence from the test set.

print(f"Predicted Value: {predicted_value[0][0]}")
  • 👍 22
  • 🔥 1
More from @datasciencefun
  1. Oct 9, 2026🇮🇳 𝗚𝗢𝗩𝗘𝗥𝗡𝗠𝗘𝗡𝗧 𝗢𝗙 𝗜𝗡𝗗𝗜𝗔 — 𝗔𝗜𝗖𝗧𝗘 𝗜𝗡𝗧𝗘𝗥𝗡𝗦𝗛𝗜𝗣𝗦 𝟮𝟬𝟮𝟲 🚀…
  2. Oct 8, 2026🔬 Kandinsky 6.0 Video: Training Details and Architecture The new Kandinsky 6.0 Video line…
  3. Oct 8, 2026🎓 𝗠𝗶𝗰𝗿𝗼𝘀𝗼𝗳𝘁 𝗙𝗥𝗘𝗘 𝗖𝗼𝘂𝗿𝘀𝗲𝘀 𝘄𝗶𝘁𝗵 𝗖𝗲𝗿𝘁𝗶𝗳𝗶𝗰𝗮𝘁𝗲𝘀! 🚀🔥 Upgr…
  4. Oct 7, 2026ORDER BY salary DESC LIMIT 5; Mistake 3 — Forgetting that LIMIT applies after sorting For…
  5. Oct 7, 2026🚀 Data Science Roadmap 2026 📍 Phase 3: SQL for Data Science 📖 Topic 4 — LIMIT LIMIT is…
  6. Oct 7, 2026🚀𝗣𝗮𝘆 𝗔𝗳𝘁𝗲𝗿 𝗣𝗹𝗮𝗰𝗲𝗺𝗲𝗻𝘁 𝗧𝗿𝗮𝗶𝗻𝗶𝗻𝗴 | 𝗕𝗲𝗰𝗼𝗺𝗲 𝗮 𝗙𝘂𝗹𝗹𝘀𝘁𝗮𝗰…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →