Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- sieć RBF za pomocą biblioteki KERAS
- """
- !pip install tensorflow==1.14.0
- !pip install -U keras
- !git clone https://github.com/PetraVidnerova/rbf_keras.git
- !import sys
- !sys.path.append('/content/rbf_keras')
- import numpy as np
- import matplotlib.pyplot as plt
- from keras.models import Sequential
- from keras.layers import Dense, Activation
- from keras.optimizers import RMSprop
- from rbflayer import RBFLayer, InitCentersRandom
- # generowanie 100 danych 2-elementowych oraz 100 wyjść sieci dla nich:
- # - indeksy [0-32] to wartości około -1000, klasa [1,0,0]
- # - indeksy [33-65] to wartości około -1000, klasa [0,1,0]
- # - indeksy [66-99] to wartości około -1000, klasa [0,0,1]
- def generate_data():
- X = np.empty([100, 2])
- Y = np.zeros([100, 3])
- for i in range(100):
- if i >= 0 and i < 33:
- Y[i][0] = 1
- X[i] = np.random.random(2)-1000
- if i >= 33 and i < 66:
- Y[i][1] = 1
- X[i] = np.random.random(2)
- if i >= 66 and i < 100:
- Y[i][2] = 1
- X[i] = np.random.random(2)+1000
- return X, Y
- x,y = generate_data()
- # tworzymy sieć z 2 neuronami wejściowymi, 2 neuronami radialnymi oraz 3 neuronami wyjściowymi, gdzie następuje klasyfikacja
- # należy pamiętać o zainicjowaniu centrów (argument initializer) w pobliżu X
- model = Sequential()
- model.add(RBFLayer(2, initializer=InitCentersRandom(x), input_shape=(2,)))
- model.add(Dense(3, activation='softmax'))
- print(model.summary())
- # funkcja straty - kwadrat różnic (czyli suma (y_pred - y_true)**2)
- model.compile(optimizer=RMSprop(), loss='mean_squared_error')
- model.fit(x,y,batch_size=5, epochs=50)
- # przewidywanie wyjścia sieci na podstawie danych wejściowych w postaci 2 wartości około 0
- print(model.predict([[np.random.random(2)]]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement