| def snake(x, alpha=10): | |||||
| def snake(x, alpha=5): | |||||
| return (x + tf.sin(x)**2/alpha) | return (x + tf.sin(x)**2/alpha) | ||||
| def x_sin(x,alpha=1.0): | |||||
| def x_sin(x,alpha=5): | |||||
| return (x + tf.sin(x)/alpha) | return (x + tf.sin(x)/alpha) | ||||
| def sin(x,alpha=1.0): | |||||
| def sin(x,alpha=5): | |||||
| return(tf.sin(x)/alpha) | return(tf.sin(x)/alpha) | ||||
| from Creation_donnee import * | from Creation_donnee import * | ||||
| import numpy as np | import numpy as np | ||||
| w=10 | |||||
| n=20 | n=20 | ||||
| #création de la base de donnéé | #création de la base de donnéé | ||||
| X,Y=creation_sin(-15,-8,n,1,) | |||||
| X2,Y2=creation_sin(10,18,n,1,) | |||||
| X,Y=creation_sin(-1.5,-1,n,w) | |||||
| X2,Y2=creation_sin(1,1.5,n,w) | |||||
| X=np.concatenate([X,X2]) | X=np.concatenate([X,X2]) | ||||
| Y=np.concatenate([Y,Y2]) | Y=np.concatenate([Y,Y2]) | ||||
| n=10000 | n=10000 | ||||
| Xv,Yv=creation_sin(-20,20,n,1) | |||||
| Xv,Yv=creation_sin(-3,3,n,w) | |||||
| model_sin.add(tf.keras.Input(shape=(1,))) | model_sin.add(tf.keras.Input(shape=(1,))) | ||||
| model_sin.add(tf.keras.layers.Dense(512, activation=sin)) | |||||
| # model_sin.add(tf.keras.layers.Dense(64, activation=sin)) | |||||
| # model_sin.add(tf.keras.layers.Dense(64, activation=sin)) | |||||
| # model_sin.add(tf.keras.layers.Dense(64, activation=sin)) | |||||
| # model_sin.add(tf.keras.layers.Dense(64, activation=sin)) | |||||
| # model_sin.add(tf.keras.layers.Dense(512, activation=sin)) | |||||
| # model_sin.add(tf.keras.layers.Dense(64, activation=sin)) | |||||
| model_sin.add(tf.keras.layers.Dense(8, activation=sin)) | |||||
| model_sin.add(tf.keras.layers.Dense(1)) | model_sin.add(tf.keras.layers.Dense(1)) | ||||
| opti=tf.keras.optimizers.Adam() | opti=tf.keras.optimizers.Adam() | ||||
| model_sin.summary() | model_sin.summary() | ||||
| model_sin.fit(X, Y, batch_size=1, epochs=10, shuffle='True',validation_data=(Xv, Yv)) | |||||
| model_sin.fit(X, Y, batch_size=16, epochs=1000, shuffle='True',validation_data=(Xv, Yv)) | |||||
| plt.figure() | plt.figure() | ||||
| plt.plot(X,Y,'x',label='donnée') | plt.plot(X,Y,'x',label='donnée') | ||||
| plt.plot(Xv,Yv,label="validation") | plt.plot(Xv,Yv,label="validation") | ||||
| plt.plot(X,Y_predis_sin,'o',label='prediction sur les donné avec sin comme activation') | |||||
| plt.plot(Xv,Y_predis_validation_sin,label='prediction sur la validation avec sin comme activation') | |||||
| plt.plot(X,Y_predis_sin,'o',label='prediction sur les données avec sin ') | |||||
| plt.plot(Xv,Y_predis_validation_sin,label='prediction sur la validation avec sin') | |||||
| plt.legend() | plt.legend() | ||||
| plt.show() | plt.show() | ||||
| # -*- coding: utf-8 -*- | |||||
| """ | |||||
| Created on Wed Nov 24 16:58:44 2021 | |||||
| @author: virgi | |||||
| """ | |||||
| import tensorflow as tf | |||||
| import matplotlib.pyplot as plt | |||||
| from fonction_activation import * | |||||
| from Creation_donnee import * | |||||
| import numpy as np | |||||
| w=10 | |||||
| n=20000 | |||||
| #création de la base de donnéé | |||||
| X,Y=creation_sin(-1.5,-1,n,w) | |||||
| X2,Y2=creation_sin(1,1.5,n,w) | |||||
| X=np.concatenate([X,X2]) | |||||
| Y=np.concatenate([Y,Y2]) | |||||
| n=10000 | |||||
| Xv,Yv=creation_sin(-3,3,n,w) | |||||
| model_sin=tf.keras.models.Sequential() | |||||
| model_sin.add(tf.keras.Input(shape=(1,))) | |||||
| # model_sin.add(tf.keras.layers.Dense(64, activation=sin)) | |||||
| # model_sin.add(tf.keras.layers.Dense(64, activation=sin)) | |||||
| # model_sin.add(tf.keras.layers.Dense(64, activation=sin)) | |||||
| # model_sin.add(tf.keras.layers.Dense(64, activation=sin)) | |||||
| # model_sin.add(tf.keras.layers.Dense(512, activation=sin)) | |||||
| # model_sin.add(tf.keras.layers.Dense(64, activation=sin)) | |||||
| model_sin.add(tf.keras.layers.Dense(512, activation=snake)) | |||||
| model_sin.add(tf.keras.layers.Dense(1)) | |||||
| opti=tf.keras.optimizers.Adam() | |||||
| model_sin.compile(opti, loss='mse', metrics=['accuracy']) | |||||
| model_sin.summary() | |||||
| model_sin.fit(X, Y, batch_size=16, epochs=10, shuffle='True',validation_data=(Xv, Yv)) | |||||
| Y_predis_sin=model_sin.predict(X) | |||||
| Y_predis_validation_sin=model_sin.predict(Xv) | |||||
| plt.figure() | |||||
| plt.plot(X,Y,'x',label='donnée') | |||||
| plt.plot(Xv,Yv,label="validation") | |||||
| plt.plot(X,Y_predis_sin,'o',label='prediction sur les données avec sin ') | |||||
| plt.plot(Xv,Y_predis_validation_sin,label='prediction sur la validation avec sin') | |||||
| plt.legend() | |||||
| plt.show() | |||||
| w=10 | w=10 | ||||
| n=20 | n=20 | ||||
| #création de la base de donnéé | #création de la base de donnéé | ||||
| X,Y=creation_sin(-1.5,-1,n,w,) | |||||
| X2,Y2=creation_sin(1,1.5,n,w,) | |||||
| X,Y=creation_sin(-1.5,-1,n,w) | |||||
| X2,Y2=creation_sin(1,1.5,n,w) | |||||
| X=np.concatenate([X,X2]) | X=np.concatenate([X,X2]) | ||||
| Y=np.concatenate([Y,Y2]) | Y=np.concatenate([Y,Y2]) | ||||
| n=10000 | n=10000 | ||||
| Xv,Yv=creation_sin(-2,2,n,w) | |||||
| Xv,Yv=creation_sin(-3,3,n,w) | |||||
| model_ReLU=tf.keras.models.Sequential() | model_ReLU=tf.keras.models.Sequential() | ||||
| plt.figure() | plt.figure() | ||||
| plt.plot(X,Y,'x',label='donnée') | plt.plot(X,Y,'x',label='donnée') | ||||
| plt.plot(Xv,Yv,label="validation") | plt.plot(Xv,Yv,label="validation") | ||||
| plt.plot(X,Y_predis_snake,'o',label='prediction sur les donné avec snake comme activation') | |||||
| plt.plot(Xv,Y_predis_validation_snake,label='prediction sur la validation avec snake comme activation') | |||||
| plt.plot(X,Y_predis_snake,'o',label='prediction sur les données avec snake') | |||||
| plt.plot(Xv,Y_predis_validation_snake,label='prediction sur la validation avec snake') | |||||
| plt.legend() | plt.legend() | ||||
| plt.show() | plt.show() | ||||
| from Creation_donnee import * | from Creation_donnee import * | ||||
| import numpy as np | import numpy as np | ||||
| w=10 | |||||
| n=20 | n=20 | ||||
| #création de la base de donnéé | #création de la base de donnéé | ||||
| X,Y=creation_sin(-15,-8,n,1,) | |||||
| X2,Y2=creation_sin(10,18,n,1,) | |||||
| X,Y=creation_x2(-1.5,-1,n) | |||||
| X2,Y2=creation_x2(1,1.5,n) | |||||
| X=np.concatenate([X,X2]) | X=np.concatenate([X,X2]) | ||||
| Y=np.concatenate([Y,Y2]) | Y=np.concatenate([Y,Y2]) | ||||
| n=10000 | n=10000 | ||||
| Xv,Yv=creation_sin(-20,20,n,1) | |||||
| Xv,Yv=creation_x2(-3,3,n) | |||||
| model_swish.summary() | model_swish.summary() | ||||
| model_swish.fit(X, Y, batch_size=1, epochs=10, shuffle='True',validation_data=(Xv, Yv)) | |||||
| model_swish.fit(X, Y, batch_size=1, epochs=16, shuffle='True',validation_data=(Xv, Yv)) | |||||
| plt.figure() | plt.figure() | ||||
| plt.plot(X,Y,'x',label='donnée') | plt.plot(X,Y,'x',label='donnée') | ||||
| plt.plot(Xv,Yv,label="validation") | plt.plot(Xv,Yv,label="validation") | ||||
| plt.plot(X,Y_predis_swish,'o',label='prediction sur les donné avec swish comme activation') | |||||
| plt.plot(Xv,Y_predis_validation_swish,label='prediction sur la validation avec swish comme activation') | |||||
| plt.plot(X,Y_predis_swish,'o',label='prediction sur les données avec swish') | |||||
| plt.plot(Xv,Y_predis_validation_swish,label='prediction sur la validation avec swish') | |||||
| plt.legend() | plt.legend() | ||||
| plt.show() | plt.show() | ||||
| from Creation_donnee import * | from Creation_donnee import * | ||||
| import numpy as np | import numpy as np | ||||
| w=10 | |||||
| n=20 | n=20 | ||||
| #création de la base de donnéé | #création de la base de donnéé | ||||
| X,Y=creation_sin(-15,-8,n,1,) | |||||
| X2,Y2=creation_sin(10,18,n,1,) | |||||
| X,Y=creation_x2(-1.5,-1,n) | |||||
| X2,Y2=creation_x2(1,1.5,n) | |||||
| X=np.concatenate([X,X2]) | X=np.concatenate([X,X2]) | ||||
| Y=np.concatenate([Y,Y2]) | Y=np.concatenate([Y,Y2]) | ||||
| n=10000 | n=10000 | ||||
| Xv,Yv=creation_sin(-20,20,n,1) | |||||
| Xv,Yv=creation_x2(-3,3,n) | |||||
| model_ReLU=tf.keras.models.Sequential() | model_ReLU=tf.keras.models.Sequential() | ||||
| model_ReLU.fit(X, Y, batch_size=1, epochs=10, shuffle='True',validation_data=(Xv, Yv)) | |||||
| model_ReLU.fit(X, Y, batch_size=16, epochs=50, shuffle='True',validation_data=(Xv, Yv)) | |||||
| model_tanh.summary() | model_tanh.summary() | ||||
| model_tanh.fit(X, Y, batch_size=1, epochs=10, shuffle='True',validation_data=(Xv, Yv)) | |||||
| model_tanh.fit(X, Y, batch_size=16, epochs=50, shuffle='True',validation_data=(Xv, Yv)) | |||||
| plt.figure() | plt.figure() | ||||
| plt.plot(X,Y,'x',label='donnée') | plt.plot(X,Y,'x',label='donnée') | ||||
| plt.plot(Xv,Yv,label="validation") | plt.plot(Xv,Yv,label="validation") | ||||
| plt.plot(X,Y_predis_ReLU,'o',label='prediction sur les donné') | |||||
| plt.plot(Xv,Y_predis_validation_ReLU,label='prediction sur la validation') | |||||
| plt.plot(X,Y_predis_ReLU,'o',label='prediction sur les données avec ReLU') | |||||
| plt.plot(Xv,Y_predis_validation_ReLU,label='prediction sur la validation avec ReLU') | |||||
| plt.legend() | plt.legend() | ||||
| plt.show() | plt.show() | ||||
| plt.figure() | plt.figure() | ||||
| plt.plot(X,Y,'x',label='donnée') | plt.plot(X,Y,'x',label='donnée') | ||||
| plt.plot(Xv,Yv,label="validation") | plt.plot(Xv,Yv,label="validation") | ||||
| plt.plot(X,Y_predis_tanh,'o',label='prediction sur les donné avec tanh comme activation') | |||||
| plt.plot(Xv,Y_predis_validation_tanh,label='prediction sur la validation avec tanh comme activation') | |||||
| plt.plot(X,Y_predis_tanh,'o',label='prediction sur les données avec tanh ') | |||||
| plt.plot(Xv,Y_predis_validation_tanh,label='prediction sur la validation avec tanh ') | |||||
| plt.legend() | plt.legend() | ||||
| plt.show() | plt.show() | ||||
| from Creation_donnee import * | from Creation_donnee import * | ||||
| import numpy as np | import numpy as np | ||||
| w=10 | |||||
| n=20 | n=20 | ||||
| #création de la base de donnéé | #création de la base de donnéé | ||||
| X,Y=creation_sin(-15,-8,n,1,) | |||||
| X2,Y2=creation_sin(10,18,n,1,) | |||||
| X,Y=creation_sin(-1.5,-1,n,w) | |||||
| X2,Y2=creation_sin(1,1.5,n,w) | |||||
| X=np.concatenate([X,X2]) | X=np.concatenate([X,X2]) | ||||
| Y=np.concatenate([Y,Y2]) | Y=np.concatenate([Y,Y2]) | ||||
| n=10000 | n=10000 | ||||
| Xv,Yv=creation_sin(-20,20,n,1) | |||||
| Xv,Yv=creation_sin(-3,3,n,w) | |||||
| plt.figure() | plt.figure() | ||||
| plt.plot(X,Y,'x',label='donnée') | plt.plot(X,Y,'x',label='donnée') | ||||
| plt.plot(Xv,Yv,label="validation") | plt.plot(Xv,Yv,label="validation") | ||||
| plt.plot(X,Y_predis_xsin,'o',label='prediction sur les donné avec x+sin comme activation') | |||||
| plt.plot(Xv,Y_predis_validation_xsin,label='prediction sur la validation avec x+sin comme activation') | |||||
| plt.plot(X,Y_predis_xsin,'o',label='prediction sur les données avec x+sin ') | |||||
| plt.plot(Xv,Y_predis_validation_xsin,label='prediction sur la validation avec x+sin') | |||||
| plt.legend() | plt.legend() | ||||
| plt.show() | plt.show() | ||||