Выбор количества единиц в слое нейронной сети для конического распределения данных - PullRequest
0 голосов
/ 10 мая 2019

Я создал набор данных, содержащий все точки, содержащиеся в круге, помеченном как 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

1 Ответ

0 голосов
/ 10 мая 2019

Пять уникальных точек определяют конику, пересекающую плоскость (https://en.wikipedia.org/wiki/Five_points_determine_a_conic), поэтому, если каждый нейрон моделирует одну из двух координат точки, вы можете попробовать 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...