신경망을 간단하게 구성하려면 케라스를 사용하자. 케라스의 layers 기능을 사용하면 은닉층의 노드 수, 결과의 노드 수 등만 지정하여 바로 사용할 수 있다. 이때 은닉층의 활성화 함수로 ReLU를 사용해보자.
이제 여러 에포크를 통한 학습으로 최적의 가중치를 발견하게 된다. 이때 최적화의 개념이 들어가는데 이 학습에서 최적화의 대상은 바로 오차이다. 오차를 최소화할 수 있도록 다음처럼 비용 함수를 loss 파라미터에 지정하고 Adam Optimizer를 이용한 최적화를 적용하여 텐서플로 모형을 컴파일한다.
>>> model.compile(optimizer='adam', >>> loss='categorical_crossentropy', >>> metrics=['accuracy'])
이제 인공 신경망을 학습할 준비가 다 되었다. 다음처럼 텐서플로 fit 함수를 이용하여 바로 학습시켜보자. 우리 눈에는 보이지 않지만 수많은 행렬곱이 계산된다.
>>> model.fit(x_data, y_data, epochs=10)
결과를 살펴보자. 몇 개나 정답을 맞췄는지를 알려주는 정분류율(accuracy)이 50%의 값이 나왔는데, 다시 말해서 이 모형이 예측한 값 중 반은 원래의 값과 다르게 예측되었다는 의미이다. 우리가 이 예제를 위해 들인 노력에 비해 50%라는 정확도는 그다지 좋아 보이지는 않는다. 은닉층의 노드 수를 5에서 10으로 바꿔보자. 앞의 코드에서 tf.keras.layers.Dense의 첫 번째 파라미터인 숫자(은닉층의 노드의 수를 의미)만 변경하면 된다.
>>> model = tf.keras.Sequential([ >>> tf.keras.layers.Dense(10, activation='relu'), >>> tf.keras.layers.Dense(3)])