如果我理解得很好,您的单个输出节点将是中间正方形的下一个状态。当您有足够的资源来训练模型时,您无需担心隐藏层中的节点数量。对于神经网络来说,这个问题很容易学习,所以没有大小问题。
您需要进行监督训练,这意味着您需要输入输入数据和匹配的预期输出。您需要确保在您的训练数据中,所有 4 个旋转都分配给相同的输出。这样,您的网络应该学会以同样的方式对待所有这些。
你让我很好奇,所以我自己试试。我的解决方案可以在几秒钟内在我的旧笔记本电脑上运行大约 20 个 epoch 来学习 100% 正确。我只是将输出稍微更改为 [0,1] 或 [1,0] 的分类,但这给出了您正在寻找的相同结果。仅供参考,这里是用python编写的代码:
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)