''''''XOR문제 GREEDY Layer-wise 트레이닝으로 풀기'''
xor = {'x1':[0,0,1,1], 'x2':[0,1,0,1], 'y':[0,1,1,0]}
XOR = pd.DataFrame(xor)
X = XOR.drop('y', axis=1)
y = XOR.y
model = Sequential()
model.add(Dense(2, input_dim=2, activation='elu'))
model.add(Dense(1, activation='linear'))
fore_weights = model.get_weights()
fore12 = Sequential()
fore12.add(Dense(2, input_dim=2, activation='elu'))
z_pred = fore12.predict(X)
back21 = Sequential()
back21.add(Dense(2, input_dim=2, activation='sigmoid'))
back21_weights = back21.get_weights()
back21_weights[0][0][0] = fore12.get_weights()[0][0][0]
back21_weights[0][1][0] = fore12.get_weights()[0][0][1]
back21_weights[0][0][1] = fore12.get_weights()[0][1][0]
back21_weights[0][1][1] = fore12.get_weights()[0][1][1]
back21.set_weights(back21_weights)
back21.compile(loss='binary_crossentropy', optimizer='adam')
back21.fit(z_pred, X, epochs=3000, verbose=0)
X_pred = back21.predict(z_pred)
print(X_pred)
print(z_pred)
print(fore12.predict(X_pred))
print(z_pred)
print(back21.predict(z_pred))
print(X_pred)
back32 = Sequential()
back32.add(Dense(2, input_dim=1, activation='elu'))
back32.compile(loss='binary_crossentropy', optimizer='adam')
back32.fit(y, z_pred, epochs=3000, verbose=0)
z_pred1 = back32.predict(y)
z_pred1
for _ in range(20):
fore23 = Sequential()
fore23.add(Dense(1, input_dim=2, activation='sigmoid'))
fore23.set_weights([back32.get_weights()[0].reshape(2,1), np.array([0.])])
fore23.compile(loss='binary_crossentropy', optimizer='adam')
y_pred = fore23.predict(z_pred1)
fore23.fit(z_pred1, y_pred, epochs=3000, verbose=0)
print(y_pred)
print(z_pred1)
back32 = Sequential()
back32.add(Dense(2, input_dim=1, activation='elu'))
back32.set_weights([fore23.get_weights()[0].reshape(1,2), np.array([0., 0.])])
back32.compile(loss='binary_crossentropy', optimizer='adam')
back32.fit(y_pred, z_pred1, epochs=3000, verbose=0)
z_pred1 = back32.predict(y_pred)
print(z_pred1)
print(y_pred)
print(fore23.predict(z_pred1))
print(y_pred)
print(back32.predict(y_pred))
print(z_pred1)
final_weights = model.get_weights()
final_weights[0] = fore12.get_weights()[0]
final_weights[1] = fore12.get_weights()[1]
final_weights[2] = fore23.get_weights()[0]
final_weights[3] = fore23.get_weights()[1]
final_weights
model = Sequential()
model.add(Dense(2, input_dim=2, activation='elu'))
model.add(Dense(1, activation='sigmoid'))
model.set_weights(final_weights)
model.compile(loss='mse', optimizer='adam')
model.fit(X, y, epochs=3000, verbose=0)
print(model.predict(X))
model = Sequential()
model.add(Dense(2, input_dim=2, activation='elu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='mse', optimizer='adam')
model.fit(X, y, epochs=3000, verbose=0)
print(model.predict(X))
'DeepLearning' 카테고리의 다른 글
DeepLearning - Sequential API / Functional API? (0) | 2022.10.28 |
---|---|
DeepLearning - 인공 신경망 모델,weights 저장하기 (0) | 2022.10.28 |
DeepLearning - GREEDY LAYER-WISE Training (1) | 2022.10.28 |
DeepLearning -레이어 , 활성화 함수 (0) | 2022.10.27 |
DeepLearning - 타이타닉 생존자 예측 (0) | 2022.10.26 |