"완전 연결되었다"는 뜻은 한 층(layer)의 모든 뉴런이 그 다음 층(layer)의 모든 뉴런과 연결된 상태를 말한다.
1차원 배열의 형태로 평탄화된 행렬을 통해 이미지를 "분류"하는데 사용되는 계층이다.
Fully connected layer를 Dense layer라고도 한다.
.
.
code
model = keras.Sequential()
model.add(layers.Flatten(input_shape = (28,28)))
model.add(layers.Dense(128, activation='relu'))
model.asdd(layers.dense(10, activation='softmax'))
위의 code에서는 Flatten을 통해 흑백 이미지, 2차원 벡터의 행렬을 1차원 배열로 평탄화하고, Relu 함수로 뉴런을 활성화하고, softmax함수로 이미지를 분류하는 것까지가 Fully connected layer라고 할 수 있다.
여기서 중요한 것은 fasion mnist에서 사용한 이미지는 "흑백"이미지라는 거이다. 흑백이미지는 흑과 백의 명암으로만 이미지가 구성되기 때문에 RGB를 사용하는 컬러이미지와 달리 벡터를 1차원 행렬로 변환시키는데 아무런 어려움이 없다.
앞서 본 train_images가 3차원 넘파이 배열로 나타난 것도 바로 그 이유이다.
(60000,28,28)에서 60000은 이미지의 개수를 뜻하고, 그 뒤의 28, 28은 가로, 세로의 크기를 의미한다.
만약 이 이미지가 RGB필터의 픽셀값을 가진 컬러 이미지였다면, (6000, 3, 28, 28)의 차원 넘파이 배열로 나타났을 것이다. (여기서 3은 RGB의 채널의 개수를 의미한다.)
이 경우, 단순히 3차원 이미지를 1차원으로 평탄화하면 공간 정보가 손실될 수 밖에 없으며, 이럴 경우 정보 부족으로인해 이미지를 분류하는 데 한계가 생길 수 밖에 없다.