43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
# -*- 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 ... |