我创建了一个数据集,该数据集包含一个圆中包含的所有点(标记为0),外部所有点均标记为1。我想教一个简单的神经网络(如果它可以学习二进制分类问题)。
现在,我已经处理了XOR问题。这启发了我使用两个隐藏层。因为圆是圆锥形的,就像在XOR问题中使用的一对直线,所以这是有道理的。否则,我会去单个隐藏层。那里没有问题。我在解释每层单元/神经元数量的用例时遇到麻烦。
很显然,我已经做了实验。
def layer_experiment(first=2,second=1):
print("Layers' count : ",first," ",second)
# create model
model = Sequential()
model.add(Dense(first, input_dim=2, activation='relu'))
model.add(Dense(second, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(data[:4000,[0,1]],data[:4000,2],epochs=30, batch_size=20, verbose=0)
scores = model.evaluate(data[4000:,:2], data[4000:,2])
print("Scores : ",scores)
predictions = model.predict_proba(data[4000:,:2])
# predictions = predictions.argmax(axis=-1)
predictions = [[migrate(x[0])] for x in predictions]
dd = np.append(data[4000:,:2],predictions,axis=-1)
df = pd.DataFrame(dd)
fg = seaborn.FacetGrid(data=df,hue=2,aspect=1.61)
fg.map(plt.scatter,0,1).add_legend()
我想知道为什么不同参数的变化会导致图形的变化,或更具体地说,是导致数据分离的超平面的变化。 更多代码在这里:https://colab.research.google.com/drive/14HYdrUxvc5REUdToFkfZQxElPq_0l7-g
答案 0 :(得分:0)
五个唯一点定义了一个与平面(https://en.wikipedia.org/wiki/Five_points_determine_a_conic)相交的圆锥形,因此,如果每个神经元对一个点的两个坐标进行建模,则可以尝试10。