Download model/time_driven_network.py from iaecpsu-1/tdce-basic: direct link, hf CLI and curl.
- Browser
- Download file 3.74 kB
-
https://huggingface.co/iaecpsu-1/tdce-basic/resolve/fb514b0d05d90abb02c8c1479cbc548f5ea71d8a/model/time_driven_network.py
- Command line
-
hf download hf://iaecpsu-1/tdce-basic@fb514b0d05d90abb02c8c1479cbc548f5ea71d8a/model/time_driven_network.py
-
curl -L -o time_driven_network.py https://huggingface.co/iaecpsu-1/tdce-basic/resolve/fb514b0d05d90abb02c8c1479cbc548f5ea71d8a/model/time_driven_network.py
3.74 kB
| import network as nw | |
| import importlib | |
| import numpy as np | |
| importlib.reload(nw) | |
| class TimeDrivenNetwork(nw.Network): | |
| def __init__(self): | |
| super().__init__() | |
| def fit(self, cost_train, y_train, epochs, learning_rate, time_usage, day_amount): | |
| result = [] | |
| samples = len(cost_train) | |
| # Train epoch times | |
| for i in range(epochs): | |
| err = 0 | |
| # train for all samples | |
| for j in range(samples): | |
| cost_input = cost_train[j] | |
| time_input = time_usage[j] | |
| da_input = day_amount[j] | |
| output = None | |
| # predict data at all layer | |
| for layer in self.layers: | |
| output = layer.forward_propagation( | |
| cost_input, time_input, da_input) | |
| # output as input of next layer | |
| cost_input = output | |
| # Find loss for display | |
| err += self.loss(y_train[j], output) | |
| # Find Error of output dE/dY using derivation of MSE | |
| error = self.loss_prime(y_train[j], output) | |
| weight = [] | |
| # Update Weight for next data | |
| # By find gradient of weight in each layer and update | |
| for layer in reversed(self.layers): | |
| error = layer.backward_propagation(error, learning_rate) | |
| weight.append(layer.get_weight()) | |
| # Find Average Error per sample | |
| err /= samples | |
| print("Epoch %d/%d calculate with error = %f" % | |
| (i + 1, epochs, err)) | |
| result.append({"epoch": i + 1, "error": err}) | |
| self.weight_list = np.append(self.weight_list, [weight]) | |
| return result | |
| def fit_on_sample(self, cost_input, y_train, learning_rate, time_input, day_amount): | |
| err = 0 | |
| output = None | |
| # predict data at all layer | |
| for layer in self.layers: | |
| output = layer.forward_propagation( | |
| cost_input, time_input, day_amount) | |
| # output as input of next layer | |
| cost_input = output | |
| # Find loss for display | |
| err += self.loss(y_train, output) | |
| # Find Error of output dE/dY using derivation of MSE | |
| error = self.loss_prime(y_train, output) | |
| # Update Weight for next data | |
| # By find gradient of weight in each layer and update | |
| for layer in reversed(self.layers): | |
| error = layer.backward_propagation(error, learning_rate) | |
| # print(f'Epoch calculate with error = {err}') | |
| return (output, err) | |
| def get_weights(self): | |
| result = [] | |
| for layer in self.layers: | |
| result.append(layer.get_weight()) | |
| return result | |
| def predict_sample(self, cost_input, time_input, day_amount): | |
| output = None | |
| for layer in self.layers: | |
| output = layer.forward_propagation( | |
| cost_input, time_input, day_amount) | |
| # output as input of next layer | |
| cost_input = output | |
| weight = layer.get_weight() | |
| self.weight_list = np.append(self.weight_list, [weight]) | |
| return output | |
| def predict(self, cost_input, time_input, day_amount): | |
| output = None | |
| for layer in self.layers: | |
| output = layer.predict(cost_input, time_input, day_amount) | |
| # output as input of next layer | |
| cost_input = output | |
| return output | |
| def check_type(self, input_name): | |
| if input_name == "capital" or input_name == "employee": | |
| return True | |
| print(f"You go to wrong class this is Time Driven not {input_name}") | |
| return False | |