Я пытаюсь создать нейронную сеть без использования какой-либо библиотеки глубокого обучения, которая распознает числа в базе данных mnist. Его структура: 784 входных нейрона, 10 скрытых нейронов (только 1 скрытый слой) и 10 выходных нейронов.
Для скрытого слоя имеется 10 смещений.
Думаю, я знаю, как это сделать. обновить веса последнего слоя, но не первых, поскольку веса последнего слоя влияют на результат. Я тоже не знаю, как обновлять предубеждения. Если я допустил ошибку при последнем обновлении слоя, сообщите мне об этом.
Вот код:
#forward propagation
def forward(inp, w1, w2, biases):
hidsRes = []
outRes = []
for i in range(len(w1)):
n = np.dot(inp, w1[i])
n += biases[i]
n = relu(n)
hidsRes.append(n)
for i in range(len(w2)):
n = np.dot(hidsRes, w2[i])
outRes.append(n)
return softmax(outRes)
#backpropagation
def back(avgResult, w1, w2, lr):
for i, w in enumerate(w2):
w2[i] += lr * avgResult[i] #I only update the last layer based on the average error of each neuron
def train(inps, hids, outs, randomWeightDiff, batchs, gens, lr):
w1, w2, b = initNn(inps, hids, outs, randomWeightDiff)
#loading the mnist dataset
x_train, x_test, y_train, y_test = getData()
for gen in range(gens):
errors = []
x_train, y_train = shuffle(x_train, y_train)
for batch in range(batchs):
prediction = forward(tolist(x_train[batch].tolist()), w1, w2, b)
y = y_train[batch]
target = [0 if i != y else 1 for i in range(10)]
errors.append([prediction[i] - target[i] for i in range(10)])
print(errors)
avg = [sum([errors[i][j] for j in range(len(errors))]) / 10 for i in range(10)]
back(avg, w1, w2, lr)
print("Generation {gen} \n" + f"{avg}")
train(784, 10, 10, 2, 100, 1000, 0.01)
Я пробовал смоделировать множество нейронных сетей и изменить лучшие из них, но это было слишком медленно и не работало.
А еще, если Научусь обновлять первый слой, смогу делать более сложные нейронные сети.
Кстати, я не разбираюсь в сложной математике, поэтому поиск в интернете не помог меня выгнали, так как я молодой.
Я пытаюсь создать нейронную сеть без использования какой-либо библиотеки глубокого обучения, которая распознает числа в базе данных mnist. Его структура: 784 входных нейрона, 10 скрытых нейронов (только 1 скрытый слой) и 10 выходных нейронов. Для скрытого слоя имеется 10 смещений. Думаю, я знаю, как это сделать. обновить веса последнего слоя, но не первых, поскольку веса последнего слоя влияют на результат. Я тоже не знаю, как обновлять предубеждения. Если я допустил ошибку при последнем обновлении слоя, сообщите мне об этом. Вот код: [code]#forward propagation def forward(inp, w1, w2, biases): hidsRes = [] outRes = []
for i in range(len(w1)): n = np.dot(inp, w1[i])
n += biases[i] n = relu(n)
hidsRes.append(n)
for i in range(len(w2)): n = np.dot(hidsRes, w2[i])
outRes.append(n)
return softmax(outRes)
#backpropagation def back(avgResult, w1, w2, lr): for i, w in enumerate(w2): w2[i] += lr * avgResult[i] #I only update the last layer based on the average error of each neuron
train(784, 10, 10, 2, 100, 1000, 0.01) [/code] Я пробовал смоделировать множество нейронных сетей и изменить лучшие из них, но это было слишком медленно и не работало. А еще, если Научусь обновлять первый слой, смогу делать более сложные нейронные сети. Кстати, я не разбираюсь в сложной математике, поэтому поиск в интернете не помог меня выгнали, так как я молодой.
Я реализую самоорганизующуюся карту Кохонена (SOM) на Python. Моя цель — обучить SOM масштабированным входным данным (X_scaled) и итеративно обновлять веса в течение нескольких эпох. Однако я столкнулся с двумя основными проблемами:...
Я реализую самоорганизующуюся карту Кохонена (SOM) на Python. Моя цель — обучить SOM масштабированным входным данным (X_scaled) и итеративно обновлять веса в течение нескольких эпох. Однако я столкнулся с двумя основными проблемами:...
Я работаю над задачей контролируемой регрессии нейронной сети, где моя целевая переменная обычно напоминает следующий шаблон:
https:// i.sstatic.net/fzr4WO06.png
В настоящее время я оцениваю различные архитектуры и подходы, и я особенно не уверен...
Я новичок, когда дело касается модуля networkx. У меня есть линейный объект в виде кадра геоданных, который выглядит следующим образом:
Используя Momepy, я могу преобразовать этот кадр геоданных в сеть в сети. х:
G = momepy.gdf_to_nx(my_line,...
Я новичок, когда дело касается модуля networkx. У меня есть линейный объект в виде кадра геоданных, который выглядит следующим образом:
Используя Momepy, я могу преобразовать этот кадр геоданных в сеть в сети. х:
G = momepy.gdf_to_nx(my_line,...