ium_434765/my_runs/_sources/neural_network_eca667942d0304c50d970a67f9012302.py
Karolina Oparczyk 3e23841578
All checks were successful
s434765-training/pipeline/head This commit looks good
sacred
2021-05-20 22:10:16 +02:00

78 lines
2.2 KiB
Python

from datetime import datetime
import pandas as pd
import numpy as np
from sacred.observers import FileStorageObserver, MongoObserver
from sacred import Experiment
from tensorflow import keras
import sys
from evaluate_network import evaluate_model
ex = Experiment("sacred_scopes", interactive=True)
# ex.observers.append(MongoObserver(url='mongodb://mongo_user:mongo_password_IUM_2021@172.17.0.1:27017',
# db_name='sacred'))
ex.observers.append(FileStorageObserver('my_runs'))
@ex.config
def my_config():
epochs_amount = 30
def normalize_data(data):
return (data - np.min(data)) / (np.max(data) - np.min(data))
@ex.capture
def prepare_model(epochs_amount, _run):
_run.info["prepare_message_ts"] = str(datetime.now())
data = pd.read_csv("data_train", sep=',', skip_blank_lines=True, nrows=1087, error_bad_lines=False,
names=["vipip install sacreddeo_id", "last_trending_date", "publish_date", "publish_hour",
"category_id",
"channel_title", "views", "likes", "dislikes", "comment_count"]).dropna()
X = data.loc[:, data.columns == "views"].astype(int)
y = data.loc[:, data.columns == "likes"].astype(int)
min_val_sub = np.min(X)
max_val_sub = np.max(X)
X = (X - min_val_sub) / (max_val_sub - min_val_sub)
print(min_val_sub)
print(max_val_sub)
min_val_like = np.min(y)
max_val_like = np.max(y)
y = (y - min_val_like) / (max_val_like - min_val_like)
print(min_val_like)
print(max_val_like)
model = keras.Sequential([
keras.layers.Dense(512, input_dim=X.shape[1], activation='relu'),
keras.layers.Dense(256, activation='relu'),
keras.layers.Dense(256, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(1, activation='linear'),
])
model.compile(loss='mean_absolute_error', optimizer="Adam", metrics=['mean_absolute_error'])
model.fit(X, y, epochs=int(epochs_amount), validation_split=0.3)
model.save('model')
metrics = evaluate_model()
_run.log_scalar("training.metrics", metrics)
return metrics
@ex.main
def my_main(epochs_amount):
print(prepare_model())
ex.run()
ex.add_artifact("model.pb")