Существует ли диапазон случайной инициализации весов в нейронной сети в классификационной проблеме? - PullRequest
0 голосов
/ 25 апреля 2019

Я реализую нейронную сеть, которая будет принимать 225 входных нейронов, и она должна классифицировать случайные числа от 1 до 7. Так что для этого мне нужно 225 случайных весов для первого вывода. Подскажите что мне делать? Я должен кормить это, чтобы продвигать вперед нейронную сеть

1 Ответ

0 голосов
/ 25 апреля 2019

Примечание. Я предполагаю, что вы используете базовую нейронную сеть прямой связи с backprop.Пожалуйста, укажите иначе, если это не так.

Вам понадобятся два набора весов, один набор весов для скрытых слоев и один набор весов для выходных слоев.

Вот базовая функция, которая должна объяснить, что я имею в виду:

# Initialize a network
def initialize_network(n_inputs, hidden_nodes, n_outputs):
    n_inputs = len(training_data[0]) - 1
    n_outputs = len(set([row[-1] for row in training_data]))

    # Create a blank list to hold the network
    network = []
    # Create your hidden layer
    hidden_layer = [{'weights': [random() for i in range(n_inputs + 1)]} for i in range(hidden_nodes)]
    # Append the hidden layer to your network list
    network.append(hidden_layer)
    # Create the output layer
    output_layer = [{'weights': [random() for i in range(hidden_nodes + 1)]} for i in range(n_outputs)]
    # Append that
    network.append(output_layer)

    # Return the network
    return network

Несколько вещей, которые нужно запомнить:

  • hidden_nodes должен быть настраиваемым параметром или заданнымв инструкции вашего проекта.Количество скрытых узлов различно для всех
  • Ваши тренировочные данные будут различаться по размеру, но функция выше не зависит от этого
...