Keras 기본 개념
x = np.array([[0,0],[0,1],[1,0],[1,1]])
y = np.array([0,1,1,1]) #or
model = Sequential([
Dense(units=1,input_dim=2), #완전연결층 Dense
Activation('sigmoid')
])
#또는
model = Sequential()
model.add(Dense(units=1,input_dim=2))
model.add(Activation('sigmoid'))
Dense()
는 한번 사용되었지만 더 많은 레이어를 추가할 수 있다input_dim
은 입력층의 뉴런 수를 의미한다. model.compile(optimizer='sgd',loss='binary_crossentropy',metrics=['accuracy'])
# 또는
from keras.optimizers import SGD,RMSprop,Adam
model.compile(optimizer=SGD(learning_rate=0.01,momentum=0.9),loss='binary_crossentropy',metrics=['accuracy'])
학습하기 전, 학습에 대한 설정을 수행한다. 손실 함수 및 최적화 방법을 정의. compile() 함수를 사용한다.
optimizer
: cost function의 최소값을 찾는 알고리즘을 말함. 입력데이터와 손실함수를 기반으로 모델을 갱신. 🔗(sgb,RMSprop,adam...)
loss
: loss function(cost function,손실함수...) - train data로 모델 성능을 측정하는 방법으로, 모델이 옳은 방향으로 학습될 수 있도록함
metrics
: 훈련과정을 모니터링 하고, 값을 반환.
정성적 분류는 accuracy, 정량적 예측은 mse를 사용하자.
파라미터로 문자열 지정이 아닌 SGD()
함수로써 지정했다. 이렇게 되면 옵션을 직접 지정하여 학습시킬 수 있다. learning_rate
가 작을수록 오래 걸리지만 자세히 학습한다.
history = model.fit(x,y,epochs=1,batch_size=1,verbose=0)
훈련셋을 이용하여 구성한 모델로 학습 시킨다. fit() 함수를 사용한다
(더 나은 표현찾기를 자동화)
이력을 확인하기 위해 history
변수에 담는다.
속성
loss_metrics = model.evaluate(x,y,batch_size=1,verbose=0)
pred = (model.predict(x>0.5).astype('int32'))
print('예측결과 : ',pred.flatten())
#save
model.save('./test.hdf5')
#load
from keras.models import load_model
mymodel = load_model('test.hdf5')
pred2 = (mymodel.predict(x>0.5).astype('int32'))
print("예측결과 : ",pred2.flatten())
hdf5
확장자 : XML과 동일하게 자기 기술적으로 구성되어있어 데이터 형식을 파일 안에 기술이 가능하다. 많은 양의 데이터를 저장 가능하다.history와 loss 정보를 변수로 받아 시각화한다.
import matplotlib.pyplot as plt
plt.plot(history.history['loss'],color='red',label='loss')
plt.plot(history.history['accuracy'],color='blue',label='loss')
plt.xlabel('epochs')
plt.legend(loc='best')
plt.show()
loss가 감소할수록 accuracy가 증가하는모습.