Регистрация | Вход
void AI(){ map<string, string> memory; // Словарь while (true) // цикл { cout << "enter question" << endl; // попросить ввести вопрос string question; cin >> question; // ввести вопрос с клавиатуры в переменную question string answer = memory[question]; // запросить вопрос в словаре // если в словаре есть такой ответ(не пустой) то вывести ответ на консоль if (answer != "") cout << question << " this is " << answer << endl; else // если нет в словаре ответа попросить ввести ответ { cout << "enter answer" << endl; cin >> answer; memory[question] = answer; // записать пару вопрос-ответ в словарь } }}
import numpy as np #Нормализация и денормализация данныхdef usual_to_norm(x): return (x - min_all)*(1-0)/(max_all - min_all) + 0def norm_to_usual(x): return (x - 0)*(max_all - min_all)/(1-0) + min_all # Сигмоида def nonlin(x,deriv=False): if(deriv==True): return x*(1-x) return 1/(1+np.exp(-x)) #Исходные данныеdata_input = np.zeros((4,3))data_input2 = np.array([[1,2,3], [4,5,6], [7,8,9], [4,3,2]]) #Выходные данные для обучения, 4*a+b-2*cdata_output = np.zeros(4)data_output2 = np.array([0,9,18,15]) #Данные для прогнозаl_progn = np.zeros(3)l_progn2 = np.array([5,1,9]) #Нормализация данныхmin_all = min(data_input2.min(),data_output2.min(),l_progn2.min())max_all = max(data_input2.max(),data_output2.max(),l_progn2.max()) for i in range(4): for j in range(3): data_input[i,j] = usual_to_norm(data_input2[i,j])for j in range(4): data_output[j] = usual_to_norm(data_output2[j])for j in range(3): l_progn[j] = usual_to_norm(l_progn2[j]) #Транспонирование выходных данныхdata_output = data_output[:,None] #Начальные веса выставлены в 0syn0 = np.array([[0,0,0]], float).T #Обучениеfor i in range(1000000): # прямое распространение l0 = data_input l1 = nonlin(np.dot(l0,syn0)) # насколько мы ошиблись? l1_error = data_output - l1 # перемножим это с наклоном сигмоиды # на основе значений в l1 l1_delta = l1_error * nonlin(l1,True) # обновим веса syn0 += np.dot(l0.T,l1_delta) print("Веса")print(syn0)print("Выход после обучения:")print(norm_to_usual(l1))print("Пргноз для: ", l_progn2)print(norm_to_usual(nonlin(np.dot(l_progn,syn0))))print("Должен быть: ", 4*l_progn2[0]+l_progn2[1]-2*l_progn2[2])0