Beispiel #1
0
    def fit(self, X_train, y_train):

        for i in range(self.epochs):

            # update epochs for modified rms updater
            self.layers[1].updater.iteration = i
            self.layers[2].updater.iteration = i

            X_train, y_train = shuffle(X_train, y_train)
            for X, y in yield_batches(X_train, y_train, self.batchsize):
                self._fit(X, y)
Beispiel #2
0
    def fit_test(self, X_train, y_train, X_test, y_test, Scaler):

        # evaluate before starting training
        self._evaluate(X_test, y_test, 0, 0, Scaler)

        for i in range(self.epochs):
            start = time.time()

            # update epochs for modified rms updater
            for l in self.layers:
                l.epoch = i

            X_train, y_train = shuffle(X_train, y_train)
            for X, y in yield_batches(X_train, y_train, self.batchsize):
                self._fit(X, y)

            duration = time.time() - start

            self._evaluate(X_test, y_test, i + 1, duration, Scaler)
Beispiel #3
0
    def _evaluate(self, X_test, y_test, epoch, duration, Scaler):

        self.layers[1].b_test = True

        result = []
        target = []

        for X, y in yield_batches(X_test, y_test, self.batchsize):

            users = X[:, 0]
            movies = X[:, 1]
            ratings = y

            pred = Scaler.inv(self.predict(users, movies))

            result.extend(pred)
            target.extend(ratings)

        print(np.min(result), np.mean(result), np.max(result))
        val_error = RMSE(target, np.clip(result, 1, 5))
        self.validation.append(val_error)

        print('epoch: {:>2d} | test error: {:>1.5f} | time: {:>5.2f}'.format(
            epoch, val_error, duration))