Я сижу и работаю над этой программой день и ночь, изучая искусство создания нейронных сетей с нуля, но меняя значение X в строке для i в диапазоне (X): ничего не меняется. То есть сеть выдает одинаковый результат за один проход или за сотни тысяч. Это заставляет меня думать, что я борюсь с очень сложной операцией if, которая мне совсем не нравится, потому что эта сеть - мой проект для поступления в школу, и если я принесу обычную операцию сравнения в качестве проекта, меня выгонят из этого с позором. Кроме того, у меня есть проблема с умножением матриц, что значительно усложняет задачу и не позволяет мне двигаться.
import numpy as np
def Sigmoid(x):
return 1/(1+np.exp(-x))
trn_inp=np.array([[1],[2],[3]]) #Массив 2 на 1. 2 строки и 1 столбец
trn_out=np.array([[1,2,3]]).T #Ожидаемые выходные данные
print("trn_inp now: \n"+str(trn_inp))
print("trn_inp matrix: "+str(np.shape(trn_inp)))
print("trn_out now: \n"+str(trn_out))
print("trn-out matrix: \n"+str(np.shape(trn_out)))
np.random.seed(1)
syn_wei=2*np.random.random((1,1))-1 #Создается массив размером x на y, который заполняется рандомными значениями от -1 до 1
#print(syn_wei)
o=1
for i in range(1):
print("Try # "+str(o))
out=Sigmoid(np.dot(trn_inp, syn_wei))
err=trn_out-out
adj=np.dot(trn_inp.T,err*(out*(1-out)))
syn_wei+=adj
o+=1
print("=="*10)
print("New weights: ")
print(syn_wei)
print("=="*10)
print("Out after refresh: ")
print(out)
new_inp=np.array([[8,2,3]]).T #Введение нового значения для сравнения
out=Sigmoid(np.dot(new_inp, syn_wei))
print("New out: "+str(out))
print(out)
#out_str="".join(str(x) for x in out)
#print(out_str)
out_flt=0
for k in range(0,len(out)):
out_flt=out[k]
#print(out_flt)
if out_flt==0:
print("No matches")
elif out_flt>=0.5:
print("May have matches")
elif out_flt>=0.8:
print("Match")
else:
print("ERROR")
#out_flt=float(out_str)
#out_int=int(out_str)
#print("Results for new situation : "+out_str)