| from tensorflow.keras.preprocessing.sequence import pad_sequences |
| from tensorflow.keras.layers import Dense, Embedding, Flatten, Dropout |
| from tensorflow.keras.optimizers import Adam |
| from tensorflow.keras.models import Sequential |
| from tqdm import tqdm |
| import numpy as np |
| import csv |
|
|
| dataset = "dataset.csv" |
| inp_len = 32 |
|
|
| X = [] |
| y = [] |
|
|
| with open(dataset, 'r') as f: |
| csv_reader = csv.reader(f) |
| for row in tqdm(csv_reader): |
| if row == []: continue |
| label = int(row[0]) |
| text = row[1] |
| text = [ord(char) for char in text] |
| X.append(text) |
| y.append(label) |
|
|
| X = np.array(pad_sequences(X, maxlen=inp_len, padding='post')) |
| y = np.array(y) |
|
|
| model = Sequential() |
| model.add(Embedding(input_dim=1500, output_dim=128, input_length=inp_len)) |
| model.add(Flatten()) |
| model.add(Dropout(0.2)) |
| model.add(Dense(512, activation="tanh")) |
| model.add(Dropout(0.5)) |
| model.add(Dense(200, activation="selu")) |
| model.add(Dense(128, activation="softplus")) |
| model.add(Dense(1, activation="softplus")) |
|
|
| model.compile(optimizer=Adam(learning_rate=0.00001), loss="mse", metrics=["accuracy",]) |
|
|
| model.fit(X, y, epochs=2, batch_size=4, workers=4, use_multiprocessing=True) |
|
|
| model.save("net.h5") |
|
|