잘 이해하면 단일 출력 노드가 중간에 다음 사각형 상태가됩니다. 모델을 훈련시키기에 충분한 리소스가있는 동안 숨겨진 레이어의 노드 수에 대해 걱정할 필요가 없습니다. 이 문제는 신경망에 대해 배우기 쉽기 때문에 크기에 관계가 없습니다.
감독 훈련을 받아야합니다. 즉, 입력 데이터와 일치하는 예상 출력을 제공해야합니다. 훈련 데이터에서 4 개의 회전이 모두 동일한 출력에 할당되어 있는지 확인해야합니다. 이런 식으로 네트워크는이 모든 것을 같은 방식으로 다루는 법을 배워야합니다.
당신은 나를 호기심으로 만들어서 스스로 시도했습니다. 내 솔루션은 오래된 랩톱에서 몇 초 안에 실행되는 약 20 개의 시대에서 100 % 정확한 것을 배울 수 있습니다. 출력을 [0,1] 또는 [1,0] 범주로 약간 변경했지만 원하는 결과와 동일합니다. 파이썬으로 작성된 코드는 다음과 같습니다.
from keras.models import Sequential
from keras.layers import Input, Dense
from keras.models import Model
from keras import optimizers
from keras.utils.np_utils import to_categorical
import helper
x_,y_ = helper.fnn_csv_toXY("conway.csv","output",False)
y_binary = to_categorical(y_)
model = Sequential()
model.add(Dense(100, activation='relu', kernel_initializer='glorot_uniform',input_shape =(9,)))
model.add(Dense(20, activation='relu', kernel_initializer='glorot_uniform'))
model.add(Dense(2, activation='softmax'))
adam=optimizers.Adam()
model.compile(optimizer=adam,
loss='categorical_crossentropy',
metrics=['acc'])
model.fit(x_, y_binary, epochs=100)