# -*- coding: utf-8 -*- # %% import numpy as np import nnwplot import matplotlib.pyplot as plt # %% ErrorRate def ErrorRate(Y,T): if Y.ndim==1 or Y.shape[0]==1: errors=Y!=T return errors.sum()/Y.size else: # für mehrere Ausgaben in one-hot Kodierung: errors=Y.argmax(0)!=T.argmax(0) return errors.sum()/Y.shape[1] # %% class SLN: def __init__(...): # Konstruktor np.random.seed(42) self._b=np.zeros((AAA,1)) self._W=np.random.randn(BBB,CCC)/np.sqrt(DDD) # def DeltaTrain(self, X, T, eta, maxIter, maxErrorRate): # N=X.shape[1] # Anzahl Trainingsdaten # plt.ion() # interactive mode on # for it in range(maxIter): # Y = ... # nur ein Aufruf # err = ErrorRate(..., ...) # if (it%20) == 0: # print('#{} err:{}\n{}\n{}'.format(it,err,self._W,self._b)) # nnwplot.plotTwoFeatures(...) # plt.pause(0.05) # warte auf GUI event loop (je nach python Version notwendig oder nicht) # if err <= maxErrorRate: # break # # update _W # ... # # update _b # ... # print('#{} err:{}\n{}\n{}'.format(it,err,self._W,self._b)) # nnwplot.plotTwoFeatures(...) # plt.pause(0.05) # warte auf GUI event loop (je nach python Version notwendig oder nicht) # # input("Press Enter to continue...") # wenn gewünscht ...