Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.82 KB | None | 0 0
  1. """
  2.         sieć RBF za pomocą biblioteki KERAS
  3. """
  4.  
  5. !pip install tensorflow==1.14.0
  6. !pip install -U keras
  7. !git clone https://github.com/PetraVidnerova/rbf_keras.git
  8. !import sys
  9. !sys.path.append('/content/rbf_keras')
  10.  
  11. import numpy as np
  12. import matplotlib.pyplot as plt
  13.  
  14. from keras.models import Sequential
  15. from keras.layers import Dense, Activation
  16. from keras.optimizers import RMSprop
  17. from rbflayer import RBFLayer, InitCentersRandom
  18.  
  19. # generowanie 100 danych 2-elementowych oraz 100 wyjść sieci dla nich:
  20. # - indeksy [0-32] to wartości około -1000, klasa [1,0,0]
  21. # - indeksy [33-65] to wartości około -1000, klasa [0,1,0]
  22. # - indeksy [66-99] to wartości około -1000, klasa [0,0,1]
  23. def generate_data():
  24.     X = np.empty([100, 2])
  25.     Y = np.zeros([100, 3])
  26.  
  27.     for i in range(100):
  28.         if i >= 0 and i < 33:
  29.             Y[i][0] = 1
  30.             X[i] = np.random.random(2)-1000
  31.         if i >= 33 and i < 66:
  32.             Y[i][1] = 1
  33.             X[i] = np.random.random(2)
  34.         if i >= 66 and i < 100:
  35.             Y[i][2] = 1
  36.             X[i] = np.random.random(2)+1000
  37.  
  38.     return X, Y
  39.  
  40.  
  41. x,y = generate_data()
  42.  
  43. # tworzymy sieć z 2 neuronami wejściowymi, 2 neuronami radialnymi oraz 3 neuronami wyjściowymi, gdzie następuje klasyfikacja
  44. # należy pamiętać o zainicjowaniu centrów (argument initializer) w pobliżu X
  45. model = Sequential()
  46. model.add(RBFLayer(2, initializer=InitCentersRandom(x), input_shape=(2,)))
  47. model.add(Dense(3, activation='softmax'))
  48.  
  49. print(model.summary())
  50.  
  51. # funkcja straty - kwadrat różnic (czyli suma (y_pred - y_true)**2)
  52. model.compile(optimizer=RMSprop(), loss='mean_squared_error')
  53. model.fit(x,y,batch_size=5, epochs=50)
  54.  
  55. # przewidywanie wyjścia sieci na podstawie danych wejściowych w postaci 2 wartości około 0
  56. print(model.predict([[np.random.random(2)]]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement