thesffs/main.py

76 lines
1.2 KiB
Python

from data import data
import numpy as np
x,y,z=data()
x=np.concatenate([np.expand_dims(zw,1) for zw in [x,y,z]],axis=1)
from tensorflow import keras
from mu import *
from n2ulayer import ulayer
from loss import loss2d
dim=int(x.shape[1])
pdim=2
inp=keras.layers.Input(x.shape[1:])
q=inp
q=partr(q,pdim,dim,ulayer)
q=cutdown(q,pdim)
model=keras.models.Model(inp,q)
model.summary()
#opt=keras.optimizers.Adam(lr=0.0001)
#opt=keras.optimizers.Adam(lr=0.001)
opt=keras.optimizers.Adam(lr=0.01)
model.compile(opt,loss=loss2d)
model.fit(x,x,
epochs=10000,
shuffle=False,
validation_split=0.2,
callbacks=[keras.callbacks.EarlyStopping(patience=250,monitor="loss",restore_best_weights=True)])
mats=[]
for lay in model.layers[1:]:
if not ("ulayer" in str(type(lay))):continue
#print(dir(lay))
#try:
mats.append(lay.numpify())
#except:
# pass
mat=None
for m in mats:
if mat is None:
mat=m
else:
mat=np.dot(m,mat)
mat=mat[:pdim]
print(mat)
loss=model.evaluate(x[:800],x[:800])
print(loss)
p=model.predict(x[:800])
import matplotlib.pyplot as plt
plt.plot(p[:,0],p[:,1],".",alpha=0.75)
plt.title(str(loss))
plt.show()