{"id":1545,"date":"2025-02-22T19:27:20","date_gmt":"2025-02-22T17:27:20","guid":{"rendered":"https:\/\/www.technology-asgard.com\/?p=1545"},"modified":"2025-02-26T21:01:12","modified_gmt":"2025-02-26T19:01:12","slug":"perceptron-model-6","status":"publish","type":"post","link":"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/","title":{"rendered":"Perceptron model 6"},"content":{"rendered":"\n<p>\u0410\u0432\u0442\u043e\u0440 &#8211; \u0421\u0443\u0445\u0430\u0447\u043e\u0432 \u0414\u0435\u043d\u0438\u0441 \u041f\u0430\u0432\u043b\u043e\u0432\u0438\u0447<\/p>\n\n\n\n<p><br><br>This is a work, and the author&#8217;s right to a work under international law comes into force from the moment the work is created.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u041d\u0438\u0436\u0447\u0435 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u043e \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u0430\u0440\u0456\u0430\u043d\u0442 \u043a\u043e\u0434\u0443 \u0437 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u043c\u0438 \u0434\u043e\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f\u043c\u0438:<\/p>\n\n\n\n<p>python<\/p>\n\n\n\n<p>\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438<\/p>\n\n\n\n<p>import numpy as np<\/p>\n\n\n\n<p>import pickle<\/p>\n\n\n\n<p>import os<\/p>\n\n\n\n<p>import time<\/p>\n\n\n\n<p>import cv2<\/p>\n\n\n\n<p>import logging<\/p>\n\n\n\n<p>import speech_recognition as sr<\/p>\n\n\n\n<p>from concurrent.futures import ThreadPoolExecutor, as_completed<\/p>\n\n\n\n<p># \u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u043b\u043e\u0433\u0443\u0432\u0430\u043d\u043d\u044f<\/p>\n\n\n\n<p>logging.basicConfig(level=logging.INFO, format=&#8217;%(asctime)s [%(levelname)s] %(message)s&#8217;)<\/p>\n\n\n\n<p># ======================= \u041a\u043b\u0430\u0441 Neuron =======================<\/p>\n\n\n\n<p>class Neuron:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def __init__(self, vector=None, memory_file=&#8217;neuron_memory.pkl&#8217;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; consciousness_frequency=1.0, thought_speed=1.0, info_quality=1.0,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; discreteness=1.0, streamness=1.0, density=1.0, interconnectedness=1.0):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;&#8221;&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041d\u0435\u0439\u0440\u043e\u043d \u0437 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0432\u0430\u0433, \u0432\u043d\u0443\u0442\u0440\u0456\u0448\u043d\u044c\u043e\u044e \u043f\u0430\u043c&#8217;\u044f\u0442\u0442\u044e \u0442\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u00ab\u0441\u0432\u0456\u0434\u043e\u043c\u043e\u0441\u0442\u0456\u00bb.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;&#8221;&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if vector is None:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.vector = np.random.rand(3)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.vector = np.array(vector, dtype=float)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; norm = np.linalg.norm(self.vector)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if norm &gt; 0:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.vector = self.vector \/ norm<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.memory = {}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.memory_file = memory_file<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.load_memory()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.connections = {}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.consciousness_frequency = consciousness_frequency<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.thought_speed = thought_speed<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.info_quality = info_quality<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.discreteness = discreteness<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.streamness = streamness<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.density = density<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.interconnectedness = interconnectedness<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.logic_rules = {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;fact&#8221;: [],<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;unverified&#8221;: [],<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;probable&#8221;: [],<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;a_priori&#8221;: []<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;Neuron \u0456\u043d\u0456\u0446\u0456\u0430\u043b\u0456\u0437\u043e\u0432\u0430\u043d\u043e \u0437 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c %s&#8221;, self.vector)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def add_connection(self, neuron, weight_coefficient=1.0):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.connections[neuron] = weight_coefficient<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0414\u043e\u0434\u0430\u043d\u043e \u0437\u0432&#8217;\u044f\u0437\u043e\u043a \u0437 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u043c \u0456\u0437 \u043a\u043e\u0435\u0444\u0456\u0446\u0456\u0454\u043d\u0442\u043e\u043c %s&#8221;, weight_coefficient)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def update_weight(self, input_vector, learning_rate=0.1):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input_vector = np.array(input_vector, dtype=float)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.vector += learning_rate * input_vector<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; norm = np.linalg.norm(self.vector)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if norm &gt; 0:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.vector = self.vector \/ norm<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0412\u0435\u043a\u0442\u043e\u0440 \u0432\u0430\u0433 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0434\u043e %s&#8221;, self.vector)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def store_memory(self, key, value, weight=1.0, category=&#8221;fact&#8221;):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.memory[key] = {&#8220;value&#8221;: value, &#8220;weight&#8221;: weight, &#8220;category&#8221;: category}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if category in self.logic_rules:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.logic_rules[category].append(key)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.save_memory()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0417\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043f\u0430\u043c&#8217;\u044f\u0442\u044c: %s -&gt; %s&#8221;, key, value)<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;def save_memory(self):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; with open(self.memory_file, &#8216;wb&#8217;) as f:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pickle.dump(self.memory, f)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041f\u0430\u043c&#8217;\u044f\u0442\u044c \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043e \u0443 \u0444\u0430\u0439\u043b %s&#8221;, self.memory_file)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def load_memory(self):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if os.path.exists(self.memory_file):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; with open(self.memory_file, &#8216;rb&#8217;) as f:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.memory = pickle.load(f)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041f\u0430\u043c&#8217;\u044f\u0442\u044c \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043e \u0437 \u0444\u0430\u0439\u043b\u0443 %s&#8221;, self.memory_file)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def activate(self, input_vector):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input_vector = np.array(input_vector, dtype=float)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; activation_value = np.dot(self.vector, input_vector)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for neuron, coeff in self.connections.items():<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; activation_value += coeff * np.dot(neuron.vector, input_vector)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;modulation = self.consciousness_frequency * self.thought_speed * self.info_quality<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; activation_value *= modulation<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0456\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u0430: %s&#8221;, activation_value)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return activation_value<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def update_consciousness_parameters(self, consciousness_frequency=None, thought_speed=None,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info_quality=None, discreteness=None,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; streamness=None, density=None, interconnectedness=None):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if consciousness_frequency is not None:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.consciousness_frequency = consciousness_frequency<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if thought_speed is not None:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.thought_speed = thought_speed<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if info_quality is not None:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.info_quality = info_quality<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if discreteness is not None:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.discreteness = discreteness<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if streamness is not None:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.streamness = streamness<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if density is not None:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.density = density<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if interconnectedness is not None:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.interconnectedness = interconnectedness<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041e\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 \u0441\u0432\u0456\u0434\u043e\u043c\u043e\u0441\u0442\u0456: %s&#8221;, self.assess_state())<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def assess_state(self):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;consciousness_frequency&#8221;: self.consciousness_frequency,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;thought_speed&#8221;: self.thought_speed,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;info_quality&#8221;: self.info_quality,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;discreteness&#8221;: self.discreteness,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;streamness&#8221;: self.streamness,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;density&#8221;: self.density,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;interconnectedness&#8221;: self.interconnectedness<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def logical_evaluation(self, input_data):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if isinstance(input_data, str) and &#8220;exp&#8221; in input_data.lower():<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; category = &#8220;fact&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; category = &#8220;probable&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key = f&#8221;evaluation_{time.time()}&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.store_memory(key, input_data, weight=1.0, category=category)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041b\u043e\u0433\u0456\u0447\u043d\u0430 \u043e\u0446\u0456\u043d\u043a\u0430: %s -&gt; %s&#8221;, input_data, category)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return category<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def associate_memories(self, key1, key2, association_strength=0.1):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if key1 in self.memory and key2 in self.memory:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; combined_key = f&#8221;{key1}-{key2}&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; combined_value = (self.memory[key1][&#8220;value&#8221;], self.memory[key2][&#8220;value&#8221;])<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; combined_weight = (self.memory[key1][&#8220;weight&#8221;] + self.memory[key2][&#8220;weight&#8221;]) * association_strength<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.memory[combined_key] = {&#8220;value&#8221;: combined_value, &#8220;weight&#8221;: combined_weight, &#8220;category&#8221;: &#8220;associated&#8221;}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.save_memory()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0410\u0441\u043e\u0446\u0456\u0430\u0446\u0456\u044f \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u0430 \u043c\u0456\u0436 %s \u0442\u0430 %s&#8221;, key1, key2)<\/p>\n\n\n\n<p># ======================= \u041a\u043b\u0430\u0441 Perceptron =======================<\/p>\n\n\n\n<p>class Perceptron:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def __init__(self, neurons=None):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if neurons is None:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.neurons = []<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.neurons = neurons<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.mental_constructions = {}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;Perceptron \u0456\u043d\u0456\u0446\u0456\u0430\u043b\u0456\u0437\u043e\u0432\u0430\u043d\u043e \u0456\u0437 %s \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438&#8221;, len(self.neurons))<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def add_neuron(self, neuron):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.neurons.append(neuron)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041d\u0435\u0439\u0440\u043e\u043d \u0434\u043e\u0434\u0430\u043d\u043e \u0434\u043e \u043f\u0435\u0440\u0446\u0435\u043f\u0442\u0440\u043e\u043d\u0430.&#8221;)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def evaluate_network(self, input_vector):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputs = [neuron.activate(input_vector) for neuron in self.neurons]<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; global_activation = sum(outputs) \/ len(outputs) if outputs else 0<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0456\u044f \u043c\u0435\u0440\u0435\u0436\u0456: %s&#8221;, global_activation)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return global_activation<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def build_mental_construction(self, construct_name, neuron_keys):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; combined_data = {}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for neuron in self.neurons:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for key in neuron.memory:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if key in neuron_keys:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; combined_data[key] = neuron.memory[key]<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.mental_constructions[construct_name] = combined_data<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u044f &#8216;%s&#8217; \u043f\u043e\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0430.&#8221;, construct_name)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return self.mental_constructions[construct_name]<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def assess_network_state(self):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; states = [neuron.assess_state() for neuron in self.neurons]<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0421\u0442\u0430\u043d \u043c\u0435\u0440\u0435\u0436\u0456: %s&#8221;, states)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return states<\/p>\n\n\n\n<p># ======================= \u041a\u043b\u0430\u0441 ImageProcessor =======================<\/p>\n\n\n\n<p>class ImageProcessor:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def __init__(self, process_color=True):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;&#8221;&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u042f\u043a\u0449\u043e process_color=True, \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442\u044c\u0441\u044f \u0443 \u0432\u0456\u0434\u0442\u0456\u043d\u043a\u0438 \u0441\u0456\u0440\u043e\u0433\u043e.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0414\u043b\u044f \u043f\u043e\u0432\u043d\u043e\u043a\u043e\u043b\u0456\u0440\u043d\u043e\u0457 \u043e\u0431\u0440\u043e\u0431\u043a\u0438 \u043c\u0438 \u0431\u0443\u0434\u0435\u043c\u043e \u043e\u0431\u0447\u0438\u0441\u043b\u044e\u0432\u0430\u0442\u0438 \u0441\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043a\u043e\u043b\u0456\u0440 \u0437\u0430 \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;&#8221;&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.process_color = process_color<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def preprocess_image(self, image_path):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; image = cv2.imread(image_path)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if image is None:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error_msg = &#8220;\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0437\u0430 \u0448\u043b\u044f\u0445\u043e\u043c: &#8221; + image_path<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.error(error_msg)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; raise ValueError(error_msg)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if self.process_color:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;# \u041d\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c\u043e \u0432 \u0433\u0440\u0430\u0434\u0430\u0446\u0456\u0457 \u0441\u0456\u0440\u043e\u0433\u043e \u2013 \u043f\u0440\u0430\u0446\u044e\u0454\u043c\u043e \u0437 \u043a\u043e\u043b\u044c\u043e\u0440\u043e\u0432\u0438\u043c \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f\u043c<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return image<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return gray<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def extract_color_features(self, image):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;&#8221;&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u0414\u043b\u044f \u043f\u043e\u0432\u043d\u043e\u043a\u043e\u043b\u0456\u0440\u043d\u043e\u0457 \u043e\u0431\u0440\u043e\u0431\u043a\u0438 \u043e\u0431\u0447\u0438\u0441\u043b\u044e\u0454\u043c\u043e \u0441\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043a\u043e\u043b\u0456\u0440 (B, G, R) \u043f\u043e \u0432\u0441\u0456\u0445 \u043f\u0456\u043a\u0441\u0435\u043b\u044f\u0445.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;&#8221;&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mean_color = np.mean(image, axis=(0, 1))<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041e\u0431\u0447\u0438\u0441\u043b\u0435\u043d\u043e \u0441\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043a\u043e\u043b\u0456\u0440: %s&#8221;, mean_color)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return mean_color<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def extract_hu_moments(self, image):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # \u042f\u043a\u0449\u043e \u043f\u0440\u0430\u0446\u044e\u0454\u043c\u043e \u0432 \u0440\u0435\u0436\u0438\u043c\u0456 \u0441\u0456\u0440\u043e\u0433\u043e, \u043c\u043e\u0436\u0435\u043c\u043e \u043e\u0431\u0447\u0438\u0441\u043b\u044e\u0432\u0430\u0442\u0438 Hu Moments<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; moments = cv2.moments(image)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; huMoments = cv2.HuMoments(moments).flatten()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; huMoments = -np.sign(huMoments) * np.log10(np.abs(huMoments) + 1e-10)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return huMoments<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def process_image(self, image_path):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; image = self.preprocess_image(image_path)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if self.process_color:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # \u0412\u0438\u0434\u0456\u043b\u044f\u0454\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u0438\u0439 \u043a\u043e\u043b\u0456\u0440\u043d\u0438\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u2013 \u0441\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043a\u043e\u043b\u0456\u0440 (B, G, R)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;features = self.extract_color_features(image)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; preprocessed = image&nbsp; # \u0432\u0436\u0435 \u0432 \u0433\u0440\u0430\u0434\u0430\u0446\u0456\u044f\u0445 \u0441\u0456\u0440\u043e\u0433\u043e<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; features = self.extract_hu_moments(preprocessed)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041e\u0431\u0440\u043e\u0431\u043b\u0435\u043d\u043e \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f: \u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u0438 %s&#8221;, features)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return features<\/p>\n\n\n\n<p># ======================= \u041a\u043b\u0430\u0441 VoiceProcessor =======================<\/p>\n\n\n\n<p>class VoiceProcessor:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def __init__(self, recognizer=None):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.recognizer = recognizer if recognizer is not None else sr.Recognizer()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def process_audio(self, audio_path, engine=&#8221;sphinx&#8221;):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; with sr.AudioFile(audio_path) as source:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; audio = self.recognizer.record(source)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if engine.lower() == &#8220;google&#8221;:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text = self.recognizer.recognize_google(audio, language=&#8221;uk-UA&#8221;)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text = self.recognizer.recognize_sphinx(audio, language=&#8221;uk-UA&#8221;)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0420\u043e\u0437\u043f\u0456\u0437\u043d\u0430\u043d\u043e \u0430\u0443\u0434\u0456\u043e: %s&#8221;, text)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return text<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; except sr.UnknownValueError:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.warning(&#8220;\u0420\u043e\u0437\u043f\u0456\u0437\u043d\u0430\u0432\u0430\u043d\u043d\u044f \u0430\u0443\u0434\u0456\u043e \u043d\u0435\u0432\u0434\u0430\u043b\u043e\u0441\u044f (UnknownValueError)&#8221;)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &#8220;\u041d\u0435\u0432\u0456\u0434\u043e\u043c\u043e&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; except sr.RequestError as e:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; err_msg = f&#8221;\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0441\u0435\u0440\u0432\u0456\u0441\u0443 \u0440\u043e\u0437\u043f\u0456\u0437\u043d\u0430\u0432\u0430\u043d\u043d\u044f: {e}&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;logging.error(err_msg)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return err_msg<\/p>\n\n\n\n<p># ======================= \u041a\u043b\u0430\u0441 VideoProcessor =======================<\/p>\n\n\n\n<p>class VideoProcessor:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def __init__(self, image_processor):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.image_processor = image_processor<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.frame_cache = {}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def process_frame(self, frame, frame_index):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if frame_index in self.frame_cache:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return self.frame_cache[frame_index]<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # \u042f\u043a\u0449\u043e \u043e\u0431\u0440\u043e\u0431\u043a\u0430 \u043f\u043e\u0432\u043d\u043e\u043a\u043e\u043b\u0456\u0440\u043d\u0430, \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0454\u0442\u044c\u0441\u044f \u043e\u0440\u0438\u0433\u0456\u043d\u0430\u043b\u044c\u043d\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; features = self.image_processor.extract_color_features(frame) if self.image_processor.process_color \\<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else self.image_processor.extract_hu_moments(frame)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.frame_cache[frame_index] = features<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return features<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def process_video(self, video_path, frame_interval=0.33):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cap = cv2.VideoCapture(video_path)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if not cap.isOpened():<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error_msg = &#8220;\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0432\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432\u0456\u0434\u0435\u043e \u0437\u0430 \u0448\u043b\u044f\u0445\u043e\u043c: &#8221; + video_path<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.error(error_msg)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; raise ValueError(error_msg)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fps = cap.get(cv2.CAP_PROP_FPS)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; skip_frames = int(round(fps * frame_interval))<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; features_list = []<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame_index = 0<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tasks = []<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; executor = ThreadPoolExecutor(max_workers=4)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while cap.isOpened():<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret, frame = cap.read()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if not ret:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if frame_index % skip_frames == 0:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tasks.append(executor.submit(self.process_frame, frame, frame_index))<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame_index += 1<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cap.release()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for future in as_completed(tasks):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;features_list.append(future.result())<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; except Exception as exc:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.error(&#8220;\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u043e\u0431\u0440\u043e\u0431\u043a\u0438 \u043a\u0430\u0434\u0440\u0443: %s&#8221;, exc)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; executor.shutdown()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041e\u0431\u0440\u043e\u0431\u043b\u0435\u043d\u043e \u0432\u0456\u0434\u0435\u043e: \u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043e %s \u043d\u0430\u0431\u043e\u0440\u0456\u0432 \u043e\u0437\u043d\u0430\u043a&#8221;, len(features_list))<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return features_list<\/p>\n\n\n\n<p># ======================= \u041a\u043b\u0430\u0441 ImageGenerator =======================<\/p>\n\n\n\n<p>class ImageGenerator:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def generate_image(self, query):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;&#8221;&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0413\u0435\u043d\u0435\u0440\u0443\u0454 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0430\u0431\u043e \u0434\u0456\u0430\u0433\u0440\u0430\u043c\u0443 \u0437\u0430 \u0437\u0430\u043f\u0438\u0442\u043e\u043c.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u042f\u043a\u0449\u043e \u0437\u0430\u043f\u0438\u0442 \u043c\u0456\u0441\u0442\u0438\u0442\u044c \u0441\u043b\u043e\u0432\u043e &#8220;diagram&#8221;, \u043c\u0430\u043b\u044e\u0454 \u043f\u0440\u043e\u0441\u0442\u0443 \u0441\u0445\u0435\u043c\u0443,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0456\u043d\u0430\u043a\u0448\u0435 \u0441\u0442\u0432\u043e\u0440\u044e\u0454 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0437 \u0442\u0435\u043a\u0441\u0442\u043e\u043c.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;&#8221;&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # \u0421\u0442\u0432\u043e\u0440\u0438\u043c\u043e \u043f\u043e\u0440\u043e\u0436\u043d\u0454 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f (500&#215;500) \u0437 \u0431\u0456\u043b\u0438\u043c \u0444\u043e\u043d\u043e\u043c<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; img = np.ones((500, 500, 3), dtype=np.uint8) * 255<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if &#8220;diagram&#8221; in query.lower():<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # \u041d\u0430\u043c\u0430\u043b\u044e\u0454\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u0443 \u0434\u0456\u0430\u0433\u0440\u0430\u043c\u0443: \u043f\u0440\u044f\u043c\u043e\u043a\u0443\u0442\u043d\u0438\u043a, \u043a\u043e\u043b\u043e, \u043b\u0456\u043d\u0456\u044e \u0456 \u0442\u0435\u043a\u0441\u0442<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cv2.rectangle(img, (50, 50), (150, 150), (0, 0, 255), 3)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cv2.circle(img, (300, 300), 50, (255, 0, 0), -1)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cv2.line(img, (0, 0), (500, 500), (0, 255, 0), 2)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cv2.putText(img, &#8220;Diagram&#8221;, (180, 250), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 2)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cv2.putText(img, query, (50, 250), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 2)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0417\u0433\u0435\u043d\u0435\u0440\u043e\u0432\u0430\u043d\u043e \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0437\u0430 \u0437\u0430\u043f\u0438\u0442\u043e\u043c: %s&#8221;, query)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return img<\/p>\n\n\n\n<p># ======================= \u041a\u043b\u0430\u0441 MemoryGraph =======================<\/p>\n\n\n\n<p>class MemoryGraph:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def __init__(self):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;self.nodes = {}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def add_node(self, node_id, data):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.nodes[node_id] = {&#8220;data&#8221;: data, &#8220;neighbors&#8221;: {}}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0414\u043e\u0434\u0430\u043d\u043e \u0432\u0443\u0437\u043e\u043b \u0443 \u0433\u0440\u0430\u0444 \u043f\u0430\u043c&#8217;\u044f\u0442\u0456: %s&#8221;, node_id)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def add_edge(self, node_id1, node_id2, weight=1.0):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if node_id1 in self.nodes and node_id2 in self.nodes:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.nodes[node_id1][&#8220;neighbors&#8221;][node_id2] = weight<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.nodes[node_id2][&#8220;neighbors&#8221;][node_id1] = weight<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0414\u043e\u0434\u0430\u043d\u043e \u0440\u0435\u0431\u0440\u043e \u043c\u0456\u0436 %s \u0442\u0430 %s&#8221;, node_id1, node_id2)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def get_node(self, node_id):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return self.nodes.get(node_id, None)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def search_by_data(self, query):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; results = []<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for node_id, info in self.nodes.items():<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if query.lower() in str(info[&#8220;data&#8221;]).lower():<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; results.append(node_id)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041f\u043e\u0448\u0443\u043a \u0437\u0430 \u0434\u0430\u043d\u0438\u043c\u0438 &#8216;%s&#8217; \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0432: %s&#8221;, query, results)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return results<\/p>\n\n\n\n<p># ======================= \u041a\u043b\u0430\u0441 CognitiveMonitor =======================<\/p>\n\n\n\n<p>class CognitiveMonitor:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def __init__(self, perceptron):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.perceptron = perceptron<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def report(self):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; states = self.perceptron.assess_network_state()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; avg_consciousness = sum(state[&#8220;consciousness_frequency&#8221;] for state in states) \/ len(states)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;Cognitive Monitor Report: Average Consciousness Frequency: %s&#8221;, avg_consciousness)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def adjust_parameters(self, target_frequency=1.0):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for neuron in self.perceptron.neurons:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if neuron.consciousness_frequency &lt; target_frequency:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; neuron.update_consciousness_parameters(consciousness_frequency=target_frequency)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041d\u0430\u043b\u0430\u0448\u0442\u043e\u0432\u0430\u043d\u043e consciousness_frequency \u0434\u043b\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0434\u043e %s&#8221;, target_frequency)<\/p>\n\n\n\n<p># ======================= \u041a\u043b\u0430\u0441 MultiModalProcessor =======================<\/p>\n\n\n\n<p>class MultiModalProcessor:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def __init__(self, image_processor, voice_processor):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.image_processor = image_processor<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.voice_processor = voice_processor<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def process(self, image_path=None, audio_path=None, text_input=None):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; results = {}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if image_path:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; image_features = self.image_processor.process_image(image_path)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; results[&#8220;image_features&#8221;] = image_features<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; except Exception as e:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; results[&#8220;image_features_error&#8221;] = str(e)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.error(&#8220;\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u043e\u0431\u0440\u043e\u0431\u043a\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f: %s&#8221;, e)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if audio_path:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voice_text = self.voice_processor.process_audio(audio_path, engine=&#8221;sphinx&#8221;)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; results[&#8220;voice_text&#8221;] = voice_text<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if text_input:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; results[&#8220;text_input&#8221;] = text_input<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0457 \u043e\u0431\u0440\u043e\u0431\u043a\u0438: %s&#8221;, results)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return results<\/p>\n\n\n\n<p># ======================= \u041a\u043b\u0430\u0441 CognitiveSystem =======================<\/p>\n\n\n\n<p>class CognitiveSystem:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def __init__(self):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.perceptron = Perceptron()<\/p>\n\n\n\n<p>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.memory_graph = MemoryGraph()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.image_processor = ImageProcessor(process_color=True)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.voice_processor = VoiceProcessor()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.multi_modal_processor = MultiModalProcessor(self.image_processor, self.voice_processor)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.monitor = CognitiveMonitor(self.perceptron)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.video_processor = VideoProcessor(self.image_processor)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.image_generator = ImageGenerator()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;CognitiveSystem \u0456\u043d\u0456\u0446\u0456\u0430\u043b\u0456\u0437\u043e\u0432\u0430\u043d\u043e.&#8221;)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def add_neuron(self, neuron):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.perceptron.add_neuron(neuron)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def integrate_modalities(self, image_path=None, audio_path=None, text_input=None):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; results = self.multi_modal_processor.process(image_path, audio_path, text_input)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if &#8220;image_features&#8221; in results:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node_id = f&#8221;img_{time.time()}&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.memory_graph.add_node(node_id, data=[results[&#8220;image_features&#8221;]])<\/p>\n\n\n\n<p>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if &#8220;voice_text&#8221; in results:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node_id = f&#8221;voice_{time.time()}&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.memory_graph.add_node(node_id, data=results[&#8220;voice_text&#8221;])<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if &#8220;text_input&#8221; in results:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node_id = f&#8221;text_{time.time()}&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.memory_graph.add_node(node_id, data=results[&#8220;text_input&#8221;])<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return results<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def integrate_video(self, video_path):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; video_features = self.video_processor.process_video(video_path, frame_interval=0.33)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if video_features:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; avg_features = np.mean(video_features, axis=0)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node_id = f&#8221;video_{time.time()}&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.memory_graph.add_node(node_id, data=avg_features.tolist())<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0410\u0433\u0440\u0435\u0433\u043e\u0432\u0430\u043d\u0456 \u043e\u0437\u043d\u0430\u043a\u0438 \u0432\u0456\u0434\u0435\u043e: %s&#8221;, avg_features)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return avg_features<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return None<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def run(self, input_vector):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; activation = self.perceptron.evaluate_network(input_vector)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;Global Activation: %s&#8221;, activation)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return activation<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def monitor_system(self):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.monitor.report()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.monitor.adjust_parameters(target_frequency=1.0)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; def generate_image(self, query):<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; generated = self.image_generator.generate_image(query)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node_id = f&#8221;gen_{time.time()}&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # \u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0454\u043c\u043e \u0437\u0433\u0435\u043d\u0435\u0440\u043e\u0432\u0430\u043d\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f (\u043c\u043e\u0436\u043d\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0443 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0456\u043a\u0441\u0435\u043b\u0456\u0432)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.memory_graph.add_node(node_id, data=generated.tolist())<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0417\u0433\u0435\u043d\u0435\u0440\u043e\u0432\u0430\u043d\u043e \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0437\u0430 \u0437\u0430\u043f\u0438\u0442\u043e\u043c &#8216;%s&#8217;, \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043e \u044f\u043a %s&#8221;, query, node_id)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return generated<\/p>\n\n\n\n<p># ======================= \u041f\u0440\u0438\u043a\u043b\u0430\u0434 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f =======================<\/p>\n\n\n\n<p>if __name__ == &#8220;__main__&#8221;:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; # \u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u043a\u043e\u0433\u043d\u0456\u0442\u0438\u0432\u043d\u043e\u0457 \u0441\u0438\u0441\u0442\u0435\u043c\u0438<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; system = CognitiveSystem()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; # \u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0442\u0430 \u0434\u043e\u0434\u0430\u0432\u0430\u043d\u043d\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u0456\u0432 \u0434\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0438<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; neuron1 = Neuron(vector=[0.1, 0.2, 0.7],<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memory_file=&#8217;neuron1_memory.pkl&#8217;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; consciousness_frequency=0.9,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; thought_speed=1.2,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info_quality=0.9)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; neuron2 = Neuron(vector=[0.5, 0.4, 0.1],<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memory_file=&#8217;neuron2_memory.pkl&#8217;,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; consciousness_frequency=0.8,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; thought_speed=1.0,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info_quality=1.0)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; neuron1.add_connection(neuron2, weight_coefficient=0.8)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; system.add_neuron(neuron1)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; system.add_neuron(neuron2)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; # \u0406\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0456\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u0438\u0445 \u0434\u0430\u043d\u0438\u0445 (\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f, \u0430\u0443\u0434\u0456\u043e, \u0442\u0435\u043a\u0441\u0442)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; image_path = &#8220;sample_image.jpg&#8221;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # \u0428\u043b\u044f\u0445 \u0434\u043e \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; audio_path = &#8220;sample_audio.wav&#8221;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # \u0428\u043b\u044f\u0445 \u0434\u043e \u0430\u0443\u0434\u0456\u043e\u0444\u0430\u0439\u043b\u0443<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; text_input = &#8220;\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u0438\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0438\u0439 \u0432\u0445\u0456\u0434&#8221;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; modalities = system.integrate_modalities(image_path=image_path,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;audio_path=audio_path,<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text_input=text_input)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041c\u0443\u043b\u044c\u0442\u0438\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u0456 \u0434\u0430\u043d\u0456: %s&#8221;, modalities)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; # \u0406\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0456\u044f \u0432\u0456\u0434\u0435\u043e (\u043a\u0430\u0434\u0440\u0438 \u043a\u043e\u0436\u043d\u0456 0.33 \u0441\u0435\u043a\u0443\u043d\u0434\u0438)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; video_path = &#8220;sample_video.mp4&#8221;&nbsp; # \u0428\u043b\u044f\u0445 \u0434\u043e \u0432\u0456\u0434\u0435\u043e\u0444\u0430\u0439\u043b\u0443<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; try:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; video_features = system.integrate_video(video_path)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0410\u0433\u0440\u0435\u0433\u043e\u0432\u0430\u043d\u0456 \u043e\u0437\u043d\u0430\u043a\u0438 \u0432\u0456\u0434\u0435\u043e: %s&#8221;, video_features)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; except Exception as e:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.error(&#8220;\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u043e\u0431\u0440\u043e\u0431\u043a\u0438 \u0432\u0456\u0434\u0435\u043e: %s&#8221;, e)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; # \u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f \u043e\u0442\u0440\u0438\u043c\u0430\u043d\u0438\u0445 \u043e\u0437\u043d\u0430\u043a \u044f\u043a \u0432\u0445\u0456\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; if modalities.get(&#8220;image_features&#8221;) is not None:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input_vector = modalities[&#8220;image_features&#8221;]<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; elif video_features is not None:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;input_vector = video_features<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; else:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input_vector = [0.3, 0.6, 0.1]<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; system.run(input_vector)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; # \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0456\u044f \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f (\u0434\u0456\u0430\u0433\u0440\u0430\u043c\u0438) \u0437\u0430 \u0437\u0430\u043f\u0438\u0442\u043e\u043c<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; generated_img = system.generate_image(&#8220;Show me a diagram&#8221;)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; cv2.imwrite(&#8220;generated_diagram.jpg&#8221;, generated_img)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0417\u0433\u0435\u043d\u0435\u0440\u043e\u0432\u0430\u043d\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043e \u044f\u043a generated_diagram.jpg&#8221;)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; # \u0412\u0438\u043a\u043e\u043d\u0430\u043d\u043d\u044f \u043c\u0435\u0442\u0430\u043a\u043e\u0433\u043d\u0456\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u043e\u043d\u0456\u0442\u043e\u0440\u0438\u043d\u0433\u0443<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; system.monitor_system()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; # \u041f\u043e\u0431\u0443\u0434\u043e\u0432\u0430 \u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0457 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u0457 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0456 \u043b\u043e\u043a\u0443\u0441\u0456\u0432 \u043f\u0430\u043c&#8217;\u044f\u0442\u0456 \u0437 \u043d\u0435\u0439\u0440\u043e\u043d\u0456\u0432<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;neuron1.store_memory(&#8220;A&#8221;, &#8220;\u041f\u043e\u043d\u044f\u0442\u0442\u044f A&#8221;, weight=0.9, category=&#8221;fact&#8221;)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; neuron1.store_memory(&#8220;B&#8221;, &#8220;\u041f\u043e\u043d\u044f\u0442\u0442\u044f B&#8221;, weight=0.8, category=&#8221;a_priori&#8221;)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; construction = system.perceptron.build_mental_construction(&#8220;Construction1&#8221;, [&#8220;A&#8221;, &#8220;B&#8221;])<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u041c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u044f &#8216;Construction1&#8217;: %s&#8221;, construction)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; # \u0412\u0438\u0432\u0456\u0434 \u0433\u0440\u0430\u0444\u0443 \u043f\u0430\u043c&#8217;\u044f\u0442\u0456 (\u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0443\u0437\u043b\u0456\u0432)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; logging.info(&#8220;\u0412\u0443\u0437\u043b\u0438 \u0433\u0440\u0430\u0444\u0443 \u043f\u0430\u043c&#8217;\u044f\u0442\u0456:&#8221;)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; for node_id, node_info in system.memory_graph.nodes.items():<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logging.info(&#8220;%s: %s&#8221;, node_id, node_info)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>\u041e\u043f\u0438\u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u0438 \u043f\u0440\u043e\u0441\u0442\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438<\/strong><\/p>\n\n\n\n<p>\u0426\u0435\u0439 \u043a\u043e\u0434 \u0441\u0442\u0432\u043e\u0440\u044e\u0454 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u0443 \u043a\u043e\u0433\u043d\u0456\u0442\u0438\u0432\u043d\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u044f\u043a\u0430 \u0437\u0434\u0430\u0442\u043d\u0430:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0420\u043e\u0437\u043f\u0456\u0437\u043d\u0430\u0432\u0430\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0443 \u043f\u043e\u0432\u043d\u043e\u043a\u043e\u043b\u0456\u0440\u043d\u043e\u043c\u0443 \u0440\u0435\u0436\u0438\u043c\u0456.<\/strong><br>\u0417\u0430\u043c\u0456\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0432 \u0447\u043e\u0440\u043d\u043e-\u0431\u0456\u043b\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u0431\u0440\u043e\u0431\u043b\u044f\u0454 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0432 \u043a\u043e\u043b\u044c\u043e\u0440\u0456, \u0432\u0438\u0434\u0456\u043b\u044f\u044e\u0447\u0438 \u0441\u0435\u0440\u0435\u0434\u043d\u0456 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0434\u043b\u044f \u043a\u043e\u0436\u043d\u043e\u0433\u043e \u0437 \u043a\u0430\u043d\u0430\u043b\u0456\u0432 (B, G, R). \u0426\u0435 \u0434\u043e\u0437\u0432\u043e\u043b\u044f\u0454 \u00ab\u0431\u0430\u0447\u0438\u0442\u0438\u00bb \u0432\u0441\u044e \u043a\u043e\u043b\u0456\u0440\u043d\u0443 \u043f\u0430\u043b\u0456\u0442\u0440\u0443.<\/li>\n\n\n\n<li><strong>\u0420\u043e\u0437\u043f\u0456\u0437\u043d\u0430\u0432\u0430\u0442\u0438 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0438\u0439 \u0432\u0445\u0456\u0434.<\/strong><br>\u041c\u043e\u0434\u0443\u043b\u044c VoiceProcessor \u043f\u0435\u0440\u0435\u0442\u0432\u043e\u0440\u044e\u0454 \u0430\u0443\u0434\u0456\u043e\u0444\u0430\u0439\u043b\u0438 (\u0433\u043e\u043b\u043e\u0441) \u043d\u0430 \u0442\u0435\u043a\u0441\u0442, \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0447\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438 \u0440\u043e\u0437\u043f\u0456\u0437\u043d\u0430\u0432\u0430\u043d\u043d\u044f (\u043d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434, Sphinx \u0447\u0438 Google).<\/li>\n\n\n\n<li><strong>\u041e\u0431\u0440\u043e\u0431\u043b\u044f\u0442\u0438 \u0432\u0456\u0434\u0435\u043e.<\/strong><br>\u041c\u043e\u0434\u0443\u043b\u044c VideoProcessor \u0432\u0438\u0431\u0438\u0440\u0430\u0454 \u043a\u0430\u0434\u0440\u0438 \u0437 \u0432\u0456\u0434\u0435\u043e \u043a\u043e\u0436\u043d\u0456 0.33 \u0441\u0435\u043a\u0443\u043d\u0434\u0438, \u043e\u0431\u0440\u043e\u0431\u043b\u044f\u0454 \u0457\u0445 \u043f\u0430\u0440\u0430\u043b\u0435\u043b\u044c\u043d\u043e, \u043e\u0442\u0440\u0438\u043c\u0443\u044e\u0447\u0438 \u043e\u0437\u043d\u0430\u043a\u0438 (\u043d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434, \u0441\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043a\u043e\u043b\u0456\u0440 \u043a\u043e\u0436\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0443). \u041e\u0442\u0440\u0438\u043c\u0430\u043d\u0456 \u043e\u0437\u043d\u0430\u043a\u0438 \u043c\u043e\u0436\u0443\u0442\u044c \u0431\u0443\u0442\u0438 \u0430\u0433\u0440\u0435\u0433\u043e\u0432\u0430\u043d\u0456 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0443 \u0432\u0441\u044c\u043e\u0433\u043e \u0432\u0456\u0434\u0435\u043e.<\/li>\n\n\n\n<li><strong>\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u0442\u0430 \u043e\u0440\u0433\u0430\u043d\u0456\u0437\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044e.<\/strong><br>\u041c\u043e\u0434\u0443\u043b\u044c MemoryGraph \u0437\u0431\u0435\u0440\u0456\u0433\u0430\u0454 \u00ab\u043b\u043e\u043a\u0443\u0441\u0438\u00bb \u043f\u0430\u043c\u2019\u044f\u0442\u0456 (\u043d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438 \u043e\u0431\u0440\u043e\u0431\u043a\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044c, \u0430\u0443\u0434\u0456\u043e, \u0432\u0456\u0434\u0435\u043e \u0430\u0431\u043e \u0437\u0433\u0435\u043d\u0435\u0440\u043e\u0432\u0430\u043d\u0456 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f) \u0456 \u0434\u043e\u0437\u0432\u043e\u043b\u044f\u0454 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0432\u0430\u0442\u0438 \u0430\u0441\u043e\u0446\u0456\u0430\u0446\u0456\u0457 \u043c\u0456\u0436 \u043d\u0438\u043c\u0438.<\/li>\n\n\n\n<li><strong>\u041c\u043e\u043d\u0456\u0442\u043e\u0440\u0438\u0442\u0438 \u0442\u0430 \u0430\u0434\u0430\u043f\u0442\u0443\u0432\u0430\u0442\u0438 \u0440\u043e\u0431\u043e\u0442\u0443.<\/strong><br>CognitiveMonitor \u0430\u043d\u0430\u043b\u0456\u0437\u0443\u0454 \u0441\u0442\u0430\u043d \u043c\u0435\u0440\u0435\u0436\u0456 (\u0441\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u0440\u0456\u0432\u0435\u043d\u044c \u00ab\u0441\u0432\u0456\u0434\u043e\u043c\u043e\u0441\u0442\u0456\u00bb \u043d\u0435\u0439\u0440\u043e\u043d\u0456\u0432) \u0456 \u0437\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438 \u043a\u043e\u0440\u0438\u0433\u0443\u0454 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438, \u0449\u043e\u0431 \u0437\u0430\u0431\u0435\u0437\u043f\u0435\u0447\u0438\u0442\u0438 \u0441\u0442\u0430\u0431\u0456\u043b\u044c\u043d\u0443 \u0440\u043e\u0431\u043e\u0442\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0438.<\/li>\n\n\n\n<li><strong>\u0406\u043d\u0442\u0435\u0433\u0440\u0443\u0432\u0430\u0442\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u0456 \u0434\u0430\u043d\u0456.<\/strong><br>MultiModalProcessor \u043e\u0431\u2019\u0454\u0434\u043d\u0443\u0454 \u0434\u0430\u043d\u0456 \u0456\u0437 \u0440\u0456\u0437\u043d\u0438\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043d\u0438\u0445 \u043a\u0430\u043d\u0430\u043b\u0456\u0432 (\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f, \u0433\u043e\u043b\u043e\u0441, \u0442\u0435\u043a\u0441\u0442) \u0434\u043b\u044f \u043f\u043e\u0431\u0443\u0434\u043e\u0432\u0438 \u0454\u0434\u0438\u043d\u043e\u0457 \u043c\u043e\u0434\u0435\u043b\u0456 \u0437\u043d\u0430\u043d\u044c.<\/li>\n\n\n\n<li><strong>\u0413\u0435\u043d\u0435\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0442\u0430 \u0441\u0445\u0435\u043c\u0438 \u0437\u0430 \u0437\u0430\u043f\u0438\u0442\u043e\u043c.<\/strong><br>ImageGenerator \u0434\u043e\u0437\u0432\u043e\u043b\u044f\u0454 \u0441\u0438\u0441\u0442\u0435\u043c\u0456 \u00ab\u043c\u0430\u043b\u044e\u0432\u0430\u0442\u0438\u00bb \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0430\u0431\u043e \u0434\u0456\u0430\u0433\u0440\u0430\u043c\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0456 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0442\u0443. \u041d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434, \u0437\u0430 \u0437\u0430\u043f\u0438\u0442\u043e\u043c \u00abShow me a diagram\u00bb \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0442\u0432\u043e\u0440\u0438\u0442\u044c \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0437 \u043f\u0440\u043e\u0441\u0442\u0438\u043c\u0438 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u0438\u043c\u0438 \u0444\u0456\u0433\u0443\u0440\u0430\u043c\u0438 \u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u043c.<\/li>\n<\/ul>\n\n\n\n<p>\u0422\u0430\u043a\u0438\u043c \u0447\u0438\u043d\u043e\u043c, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u0436\u0435 \u043d\u0435 \u043b\u0438\u0448\u0435 \u043f\u0440\u0438\u0439\u043c\u0430\u0442\u0438 \u0442\u0430 \u0430\u043d\u0430\u043b\u0456\u0437\u0443\u0432\u0430\u0442\u0438 \u0440\u0456\u0437\u043d\u043e\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u0456 \u0434\u0430\u043d\u0456, \u0430 \u0439 \u0441\u0430\u043c\u0430 \u0441\u0442\u0432\u043e\u0440\u044e\u0432\u0430\u0442\u0438 \u0432\u0456\u0437\u0443\u0430\u043b\u044c\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 (\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f, \u0441\u0445\u0435\u043c\u0438) \u0437\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u044e. \u0426\u0435 \u0440\u043e\u0431\u0438\u0442\u044c \u0457\u0457 \u043f\u043e\u0442\u0443\u0436\u043d\u0438\u043c \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u044e\u0432\u0430\u043d\u043d\u044f \u043a\u043e\u0433\u043d\u0456\u0442\u0438\u0432\u043d\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0456\u0432 \u0456 \u0434\u043b\u044f \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u0432\u0430\u043d\u043d\u044f \u0432 \u0456\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0438\u0445 \u0430\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u0430\u0445, \u0430\u043d\u0430\u043b\u0456\u0437\u0456 \u043c\u0435\u0434\u0456\u0430 \u0430\u0431\u043e \u043d\u0430\u0432\u0456\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0456\u0457 \u0432\u0456\u0437\u0443\u0430\u043b\u044c\u043d\u0438\u0445 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u044c.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0410\u0432\u0442\u043e\u0440 &#8211; \u0421\u0443\u0445\u0430\u0447\u043e\u0432 \u0414\u0435\u043d\u0438\u0441 \u041f\u0430\u0432\u043b\u043e\u0432\u0438\u0447 This is a work, and the author&#8217;s right to a work under international law comes into force from the moment the work is created. \u041d\u0438\u0436\u0447\u0435 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u043e \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u0430\u0440\u0456\u0430\u043d\u0442 \u043a\u043e\u0434\u0443 \u0437 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u043c\u0438 \u0434\u043e\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f\u043c\u0438: python \u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 import numpy as np import pickle import os import time import cv2 import logging import speech_recognition as sr from concurrent.futures import ThreadPoolExecutor, as_completed # \u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u043b\u043e\u0433\u0443\u0432\u0430\u043d\u043d\u044f logging.basicConfig(level=logging.INFO, format=&#8217;%(asctime)s [%(levelname)s] %(message)s&#8217;) # ======================= \u041a\u043b\u0430\u0441 Neuron ======================= class Neuron: &nbsp;&nbsp;&nbsp; def __init__(self, vector=None, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1400,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1545","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bez-kategoriyi"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Perceptron model 6 - Asgard Technology<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Perceptron model 6 - Asgard Technology\" \/>\n<meta property=\"og:description\" content=\"\u0410\u0432\u0442\u043e\u0440 &#8211; \u0421\u0443\u0445\u0430\u0447\u043e\u0432 \u0414\u0435\u043d\u0438\u0441 \u041f\u0430\u0432\u043b\u043e\u0432\u0438\u0447 This is a work, and the author&#8217;s right to a work under international law comes into force from the moment the work is created. \u041d\u0438\u0436\u0447\u0435 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u043e \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u0430\u0440\u0456\u0430\u043d\u0442 \u043a\u043e\u0434\u0443 \u0437 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u043c\u0438 \u0434\u043e\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f\u043c\u0438: python \u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 import numpy as np import pickle import os import time import cv2 import logging import speech_recognition as sr from concurrent.futures import ThreadPoolExecutor, as_completed # \u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u043b\u043e\u0433\u0443\u0432\u0430\u043d\u043d\u044f logging.basicConfig(level=logging.INFO, format=&#8217;%(asctime)s [%(levelname)s] %(message)s&#8217;) # ======================= \u041a\u043b\u0430\u0441 Neuron ======================= class Neuron: &nbsp;&nbsp;&nbsp; def __init__(self, vector=None, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/\" \/>\n<meta property=\"og:site_name\" content=\"Asgard Technology\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-22T17:27:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-26T19:01:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2025\/02\/dall\u00b7e-2024-12-26-13.27.31-a-futuristic-3d-visualization-of-a-perceptron-network.-each-neuron-is-represented-as-a-glowing-sphere-with-intricate-3d-weight-structures-inside-disp.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1792\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Asgard Technology\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Asgard Technology\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/\",\"url\":\"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/\",\"name\":\"Perceptron model 6 - Asgard Technology\",\"isPartOf\":{\"@id\":\"https:\/\/www.technology-asgard.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2025\/02\/dall\u00b7e-2024-12-26-13.27.31-a-futuristic-3d-visualization-of-a-perceptron-network.-each-neuron-is-represented-as-a-glowing-sphere-with-intricate-3d-weight-structures-inside-disp.webp\",\"datePublished\":\"2025-02-22T17:27:20+00:00\",\"dateModified\":\"2025-02-26T19:01:12+00:00\",\"author\":{\"@id\":\"https:\/\/www.technology-asgard.com\/#\/schema\/person\/7a9fadfd46fd8502fd6a6bb8371d0a19\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/#primaryimage\",\"url\":\"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2025\/02\/dall\u00b7e-2024-12-26-13.27.31-a-futuristic-3d-visualization-of-a-perceptron-network.-each-neuron-is-represented-as-a-glowing-sphere-with-intricate-3d-weight-structures-inside-disp.webp\",\"contentUrl\":\"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2025\/02\/dall\u00b7e-2024-12-26-13.27.31-a-futuristic-3d-visualization-of-a-perceptron-network.-each-neuron-is-represented-as-a-glowing-sphere-with-intricate-3d-weight-structures-inside-disp.webp\",\"width\":1792,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043e\u043b\u043e\u0432\u043d\u0430\",\"item\":\"https:\/\/www.technology-asgard.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Perceptron model 6\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.technology-asgard.com\/#website\",\"url\":\"https:\/\/www.technology-asgard.com\/\",\"name\":\"Asgard Technology\",\"description\":\"Asgard for a better future\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.technology-asgard.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.technology-asgard.com\/#\/schema\/person\/7a9fadfd46fd8502fd6a6bb8371d0a19\",\"name\":\"Asgard Technology\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.technology-asgard.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2024\/12\/sloj-4.svg\",\"contentUrl\":\"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2024\/12\/sloj-4.svg\",\"caption\":\"Asgard Technology\"},\"sameAs\":[\"https:\/\/www.technology-asgard.com\"],\"url\":\"https:\/\/www.technology-asgard.com\/en\/author\/asgard_0727\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Perceptron model 6 - Asgard Technology","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/","og_locale":"en_US","og_type":"article","og_title":"Perceptron model 6 - Asgard Technology","og_description":"\u0410\u0432\u0442\u043e\u0440 &#8211; \u0421\u0443\u0445\u0430\u0447\u043e\u0432 \u0414\u0435\u043d\u0438\u0441 \u041f\u0430\u0432\u043b\u043e\u0432\u0438\u0447 This is a work, and the author&#8217;s right to a work under international law comes into force from the moment the work is created. \u041d\u0438\u0436\u0447\u0435 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u043e \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u0430\u0440\u0456\u0430\u043d\u0442 \u043a\u043e\u0434\u0443 \u0437 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u043c\u0438 \u0434\u043e\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f\u043c\u0438: python \u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 import numpy as np import pickle import os import time import cv2 import logging import speech_recognition as sr from concurrent.futures import ThreadPoolExecutor, as_completed # \u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u043b\u043e\u0433\u0443\u0432\u0430\u043d\u043d\u044f logging.basicConfig(level=logging.INFO, format=&#8217;%(asctime)s [%(levelname)s] %(message)s&#8217;) # ======================= \u041a\u043b\u0430\u0441 Neuron ======================= class Neuron: &nbsp;&nbsp;&nbsp; def __init__(self, vector=None, [&hellip;]","og_url":"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/","og_site_name":"Asgard Technology","article_published_time":"2025-02-22T17:27:20+00:00","article_modified_time":"2025-02-26T19:01:12+00:00","og_image":[{"width":1792,"height":1024,"url":"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2025\/02\/dall\u00b7e-2024-12-26-13.27.31-a-futuristic-3d-visualization-of-a-perceptron-network.-each-neuron-is-represented-as-a-glowing-sphere-with-intricate-3d-weight-structures-inside-disp.webp","type":"image\/webp"}],"author":"Asgard Technology","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Asgard Technology","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/","url":"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/","name":"Perceptron model 6 - Asgard Technology","isPartOf":{"@id":"https:\/\/www.technology-asgard.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/#primaryimage"},"image":{"@id":"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/#primaryimage"},"thumbnailUrl":"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2025\/02\/dall\u00b7e-2024-12-26-13.27.31-a-futuristic-3d-visualization-of-a-perceptron-network.-each-neuron-is-represented-as-a-glowing-sphere-with-intricate-3d-weight-structures-inside-disp.webp","datePublished":"2025-02-22T17:27:20+00:00","dateModified":"2025-02-26T19:01:12+00:00","author":{"@id":"https:\/\/www.technology-asgard.com\/#\/schema\/person\/7a9fadfd46fd8502fd6a6bb8371d0a19"},"breadcrumb":{"@id":"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/#primaryimage","url":"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2025\/02\/dall\u00b7e-2024-12-26-13.27.31-a-futuristic-3d-visualization-of-a-perceptron-network.-each-neuron-is-represented-as-a-glowing-sphere-with-intricate-3d-weight-structures-inside-disp.webp","contentUrl":"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2025\/02\/dall\u00b7e-2024-12-26-13.27.31-a-futuristic-3d-visualization-of-a-perceptron-network.-each-neuron-is-represented-as-a-glowing-sphere-with-intricate-3d-weight-structures-inside-disp.webp","width":1792,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/www.technology-asgard.com\/en\/perceptron-model-6\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043e\u043b\u043e\u0432\u043d\u0430","item":"https:\/\/www.technology-asgard.com\/en\/"},{"@type":"ListItem","position":2,"name":"Perceptron model 6"}]},{"@type":"WebSite","@id":"https:\/\/www.technology-asgard.com\/#website","url":"https:\/\/www.technology-asgard.com\/","name":"Asgard Technology","description":"Asgard for a better future","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.technology-asgard.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.technology-asgard.com\/#\/schema\/person\/7a9fadfd46fd8502fd6a6bb8371d0a19","name":"Asgard Technology","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.technology-asgard.com\/#\/schema\/person\/image\/","url":"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2024\/12\/sloj-4.svg","contentUrl":"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2024\/12\/sloj-4.svg","caption":"Asgard Technology"},"sameAs":["https:\/\/www.technology-asgard.com"],"url":"https:\/\/www.technology-asgard.com\/en\/author\/asgard_0727\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.technology-asgard.com\/wp-content\/uploads\/2025\/02\/dall\u00b7e-2024-12-26-13.27.31-a-futuristic-3d-visualization-of-a-perceptron-network.-each-neuron-is-represented-as-a-glowing-sphere-with-intricate-3d-weight-structures-inside-disp.webp","_links":{"self":[{"href":"https:\/\/www.technology-asgard.com\/en\/wp-json\/wp\/v2\/posts\/1545"}],"collection":[{"href":"https:\/\/www.technology-asgard.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.technology-asgard.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.technology-asgard.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.technology-asgard.com\/en\/wp-json\/wp\/v2\/comments?post=1545"}],"version-history":[{"count":2,"href":"https:\/\/www.technology-asgard.com\/en\/wp-json\/wp\/v2\/posts\/1545\/revisions"}],"predecessor-version":[{"id":1567,"href":"https:\/\/www.technology-asgard.com\/en\/wp-json\/wp\/v2\/posts\/1545\/revisions\/1567"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.technology-asgard.com\/en\/wp-json\/wp\/v2\/media\/1400"}],"wp:attachment":[{"href":"https:\/\/www.technology-asgard.com\/en\/wp-json\/wp\/v2\/media?parent=1545"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.technology-asgard.com\/en\/wp-json\/wp\/v2\/categories?post=1545"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.technology-asgard.com\/en\/wp-json\/wp\/v2\/tags?post=1545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}