Epoch 1/10
Traceback (most recent call last):
  File "c:\Users\Se1zed\Desktop\folder\passgen ai\main.py", line 55, in <module>
    model.fit(sequences, targets, batch_size=128, epochs=10, verbose=1)
  File "C:\Users\Se1zed\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\utils\traceback_utils.py", line 70, in error_handler
    raise e.with_traceback(filtered_tb) from None
  File "C:\Users\Se1zed\AppData\Local\Temp\__autograph_generated_filea29pgo37.py", line 15, in tf__train_function
    retval_ = ag__.converted_call(ag__.ld(step_function), (ag__.ld(self), ag__.ld(iterator)), None, fscope)
ValueError: in user code:

    File "C:\Users\Se1zed\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\engine\training.py", line 1284, in train_function  *
        return step_function(self, iterator)
    File "C:\Users\Se1zed\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\engine\training.py", line 1268, in step_function  **
        outputs = model.distribute_strategy.run(run_step, args=(data,))
    File "C:\Users\Se1zed\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\engine\training.py", line 1249, in run_step  **
        outputs = model.train_step(data)
    File "C:\Users\Se1zed\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\engine\training.py", line 1050, in train_step
        y_pred = self(x, training=True)
    File "C:\Users\Se1zed\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\utils\traceback_utils.py", line 70, in error_handler
        raise e.with_traceback(filtered_tb) from None
    File "C:\Users\Se1zed\AppData\Local\Programs\Python\Python310\lib\site-packages\keras\engine\input_spec.py", line 235, in assert_input_compatibility
        raise ValueError(

    ValueError: Exception encountered when calling layer 'sequential' (type Sequential).

    Input 0 of layer "lstm" is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: (None, 10)

    Call arguments received by layer 'sequential' (type Sequential):
      • inputs=tf.Tensor(shape=(None, 10), dtype=int32)
      • training=True
      • mask=None

import numpy as np
import gc
from keras.models import Sequential
from keras.layers import LSTM, Dense
from keras import backend as K

# Read and preprocess the dataset
def read_dataset(file_path):
    with open(file_path, "r", encoding="utf-8") as file:
        lines = file.read().split("\n")
        text = " ".join(lines) # Concatenate all lines into a single string

        # Create a set of unique characters and map them to numerical indices
        chars = sorted(list(set(text)))
        char_to_idx = {char: idx for idx, char in enumerate(chars)}
        idx_to_char = {idx: char for idx, char in enumerate(chars)}

        return text, chars, char_to_idx, idx_to_char

def prepare_sequences(text, seq_length, char_to_idx):
    sequences = []
    targets = []
    for i in range(len(text) - seq_length):
        sequence = text[i:i + seq_length]
        target = text[i + seq_length]
        sequences.append([char_to_idx[char] for char in sequence])
        targets.append(char_to_idx[target])

    return np.array(sequences), np.array(targets)

# Model configuration
seq_length = 10
hidden_units = 128

# Read and preprocess the dataset
file_path = "rockyou.txt"
text, chars, char_to_idx, idx_to_char = read_dataset(file_path)

# Prepare training sequences and targets
sequences, targets = prepare_sequences(text, seq_length, char_to_idx)

# Clear Keras session and release memory
K.clear_session()
gc.collect()

# Build the model
model = Sequential()
model.add(LSTM(hidden_units, input_shape=(seq_length,)))
model.add(Dense(len(chars), activation="softmax"))

# Configure training parameters
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy")

# Train the model
model.fit(sequences, targets, batch_size=128, epochs=10, verbose=1)

# Generate new text
starting_sequence = "F"
generated_text = starting_sequence

# Generate characters one by one
for _ in range(10):
    sequence = generated_text[-seq_length:]
    X = np.array([char_to_idx[char] for char in sequence]).reshape(1, seq_length, 1)
    predicted_idx = np.argmax(model.predict(X))
    predicted_char = idx_to_char[predicted_idx]
    generated_text += predicted_char

print("Generated Text:\n" + generated_text)