Примечание. Я предполагаю, что вы используете базовую нейронную сеть прямой связи с 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
должен быть настраиваемым параметром или заданнымв инструкции вашего проекта.Количество скрытых узлов различно для всех - Ваши тренировочные данные будут различаться по размеру, но функция выше не зависит от этого