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() print(metrics) return metrics @ex.main def my_main(epochs_amount): print(prepare_model()) ex.run() ex.add_artifact("model.pb")