Delete 'simple_regression_lab7.py'
This commit is contained in:
parent
94c0a01b2b
commit
464ada76f2
@ -1,89 +0,0 @@
|
|||||||
import tensorflow as tf
|
|
||||||
from keras import layers
|
|
||||||
from keras.models import save_model
|
|
||||||
import pandas as pd
|
|
||||||
import numpy as np
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
import sys
|
|
||||||
from sacred import Experiment
|
|
||||||
from sacred.observers import FileStorageObserver
|
|
||||||
from sacred.observers import MongoObserver
|
|
||||||
|
|
||||||
# Stworzenie obiektu klasy Experiment do śledzenia przebiegu regresji narzędziem Sacred
|
|
||||||
ex = Experiment()
|
|
||||||
|
|
||||||
# Dodanie obserwatora FileObserver
|
|
||||||
ex.observers.append(FileStorageObserver('runs'))
|
|
||||||
|
|
||||||
#Dodanie obserwatora Mongo
|
|
||||||
ex.observers.append(MongoObserver(url='mongodb://mongo_user:mongo_password_IUM_2021@localhost:27017', db_name='sacred'))
|
|
||||||
|
|
||||||
# Przykładowa modyfikowalna z Sacred konfiguracja wybranych parametrów treningu
|
|
||||||
@ex.config
|
|
||||||
def config():
|
|
||||||
units = 1
|
|
||||||
learning_rate = 0.1
|
|
||||||
|
|
||||||
|
|
||||||
# Reszta kodu wrzucona do udekorowanej funkcji train do wywołania przez Sacred, żeby coś było capture'owane
|
|
||||||
@ex.capture
|
|
||||||
def train(units, learning_rate, _run):
|
|
||||||
# Pobranie przykładowego argumentu trenowania z poziomu Jenkinsa
|
|
||||||
EPOCHS_NUM = int(sys.argv[1])
|
|
||||||
|
|
||||||
# Wczytanie danych
|
|
||||||
data_train = pd.read_csv('lego_sets_clean_train.csv')
|
|
||||||
data_test = pd.read_csv('lego_sets_clean_test.csv')
|
|
||||||
|
|
||||||
# Wydzielenie zbiorów dla predykcji ceny zestawu na podstawie liczby klocków, którą zawiera
|
|
||||||
train_piece_counts = np.array(data_train['piece_count'])
|
|
||||||
train_prices = np.array(data_train['list_price'])
|
|
||||||
test_piece_counts = np.array(data_test['piece_count'])
|
|
||||||
test_prices = np.array(data_test['list_price'])
|
|
||||||
|
|
||||||
# Normalizacja
|
|
||||||
normalizer = layers.Normalization(input_shape=[1, ], axis=None)
|
|
||||||
normalizer.adapt(train_piece_counts)
|
|
||||||
|
|
||||||
# Inicjalizacja
|
|
||||||
model = tf.keras.Sequential([
|
|
||||||
normalizer,
|
|
||||||
layers.Dense(units=units)
|
|
||||||
])
|
|
||||||
|
|
||||||
# Kompilacja
|
|
||||||
model.compile(
|
|
||||||
optimizer=tf.optimizers.Adam(learning_rate=learning_rate),
|
|
||||||
loss='mean_absolute_error'
|
|
||||||
)
|
|
||||||
|
|
||||||
# Trening
|
|
||||||
history = model.fit(
|
|
||||||
train_piece_counts,
|
|
||||||
train_prices,
|
|
||||||
epochs=EPOCHS_NUM,
|
|
||||||
verbose=0,
|
|
||||||
validation_split=0.2
|
|
||||||
)
|
|
||||||
|
|
||||||
# Wykonanie predykcji na danych ze zbioru testującego
|
|
||||||
y_pred = model.predict(test_piece_counts)
|
|
||||||
|
|
||||||
# Zapis predykcji do pliku
|
|
||||||
results = pd.DataFrame(
|
|
||||||
{'test_set_piece_count': test_piece_counts.tolist(), 'predicted_price': [round(a[0], 2) for a in y_pred.tolist()]})
|
|
||||||
results.to_csv('lego_reg_results.csv', index=False, header=True)
|
|
||||||
|
|
||||||
# Zapis modelu do pliku standardowo poprzez metodę kerasa i poprzez metodę obiektu Experiment z Sacred
|
|
||||||
model.save('lego_reg_model')
|
|
||||||
ex.add_artifact('lego_reg_model_art')
|
|
||||||
|
|
||||||
# Przykładowo zwracamy coś w charakterze wyników, żeby było widoczne w plikach zapisanych przez obserwator
|
|
||||||
hist = pd.DataFrame(history.history)
|
|
||||||
hist['epoch'] = history.epoch
|
|
||||||
_run.info["train_results"] = str(hist.tail())
|
|
||||||
return hist.tail()
|
|
||||||
|
|
||||||
@ex.automain
|
|
||||||
def main(units, learning_rate):
|
|
||||||
print(train())
|
|
Loading…
Reference in New Issue
Block a user