Лекция
Привет, Вы узнаете о том , что такое реализация классического нейрона, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое реализация классического нейрона, сети хопфилда на javascript , настоятельно рекомендую прочитать все из категории Вычислительный интеллект.
//Globals weights
var weights = new Array();
var defaultWeight = -1;
//Our small Neuron Class=)
with (NeuronClass = new Function){
prototype.tsum = 0;
prototype.prilly = 0;
prototype.view = '';
prototype.vec = new Array();
//Sum all inputs
prototype.sum = function(x){
this.tsum = 0;
for (var k = 0; k < 4;k++) {
this.tsum += weights[k] * x[k];
}
this.tsum += defaultWeight;
if (this.tsum < 0) {
return 0;
}
else {
return 1;
}
}
//Teach function
prototype.teach = function(i, d, k){
this.prilly = 0;
this.prilly = 0.1 * (1 + Math.sin(0.01 * k * d * i));
return this.prilly;
}
//Check job our neoron
prototype.check = function(vector){
this.vec = vector.split(',');
this.view += this.sum(this.vec);
$("#out_2").html('Result: ' + this.view);
this.view = '';
}
}
* This source code was highlighted with Source Code Highlighter.
if (this.tsum < 0) {
return 0;
}
else {
return 1;
}
)
var i, j, k, Yt, Yv, d, ms;
var biasing = new Array();
var x = new Array();
var values = new Array();
var view = '';
var Neuron = new NeuronClass();
check = function(vector){
Neuron.check(vector);
}
for (k = 0; k < 4; k++) {
weights[k] = Math.random();
biasing[k] = Math.random();
}
view += 'Start : ' + weights[0] + ' ' + weights[1] + ' ' + weights[2] + ' ' + weights[3] + '<br />';
i = 0;
while (i <= 200) {
j = Math.round(Math.random() * 10);
switch (j) {
case 1:{
x[0] = 1;
x[1] = 1;
x[2] = 0;
x[3] = 1;
Yv = 0;
break;
}
case 2:{
x[0] = 1;
x[1] = 1;
x[2] = 1;
x[3] = 0;
Yv = 0;
break;
}
case 3:{
x[0] = 1;
x[1] = 1;
x[2] = 1;
x[3] = 1;
Yv = 1;
break;
}
case 4:{
x[0] = 1;
x[1] = 1;
x[2] = 0;
x[3] = 0;
Yv = 0;
break;
}
case 5:{
x[0] = 1;
x[1] = 0;
x[2] = 1;
x[3] = 1;
Yv = 0;
break;
}
case 6:{
x[0] = 1;
x[1] = 0;
x[2] = 1;
x[3] = 0;
Yv = 0;
break;
}
case 7:{
x[0] = 1;
x[1] = 0;
x[2] = 0;
x[3] = 1;
Yv = 0;
break;
}
case 8:{
x[0] = 1;
x[1] = 0;
x[2] = 0;
x[3] = 0;
Yv = 0;
break;
}
case 9:{
x[0] = 0;
x[1] = 1;
x[2] = 1;
x[3] = 1;
Yv = 0;
break;
}
case 10:{
x[0] = 0;
x[1] = 0;
x[2] = 0;
x[3] = 0;
Yv = 0;
break;
}
}
Yt = Neuron.sum(x);
d = Yv - Yt;
for (k = 0; k < 4; k++)
values[k] = Neuron.teach(i, d, biasing[k]);
for (k = 0; k < 4; k++)
weights[k] = weights[k] + values[k] * d * x[k];
i++;
}
view += 'Stop : ' + weights[0] + ' ' + weights[1] + ' ' + weights[2] + ' ' + weights[3] + '<br />';
$("#out").html(view);
Yt = Neuron.sum(x);
d = Yv - Yt;
for (k = 0; k < 4; k++)
values[k] = Neuron.teach(i, d, biasing[k]);
for (k = 0; k < 4; k++)
weights[k] = weights[k] + values[k] * d * x[k];
with (MemClass = new Function){
prototype.global_matrix = new Array();
prototype.sign = function(value){
return (parseFloat(value) > 0) ? '1' : '-1';
}
prototype.searchW = function(vector){
var vec = new Array();
var returned = new Array();
var tmp = new Array();
vec = vector.split(',');
this.ViewerW(this.getW(this.getTmp(vec))[1]);
}
prototype.getTmp = function(vec){
var tmp = new Array();
var count = 0;
count = vec.length;
for (var i = 0; i < count; i++) {
tmp[i] = parseFloat(2 * vec[i] - 1);
}
return tmp;
}
prototype.getW = function(tmp){
var view = '';
var returned = new Array();
var count = 0;
count = tmp.length;
returned[0] = new Array();
for (var i = 0; i < count; i++) {
for (var j = 0; j < count; j++) {
//alert(returned[i]);
if (j == 0)
returned[i] = new Array();
returned[i][j] = parseFloat(tmp[i] * tmp[j]);
if (i == j)
returned[i][j]--;
if (returned[i][j] >= 0)
view += ' ';
view += returned[i][j];
}
view += '<br />';
}
this.global_matrix = returned;
//tmp
return Array(returned, view);
}
prototype.check = function(vector, j){
var sum = 0;
for (var i = 0; i < vector.length; i++) {
sum = sum + parseFloat(vector[i]) * parseFloat(this.global_matrix[j][i]);
}
return sum;
}
prototype.checkMatrix = function(vector){
var view = '';
var vec = new Array();
vector = vector.split(',');
for (var i = 0; i < vector.length; i++) {
vec[i] = this.sign(this.check(vector, i));
view += vec[i];
}
this.ViewerCheck(view);
prototype.ViewerW = function(matrix){
$("#matrix").html(matrix);
$("#form_second").css({
display: "block"
});
}
}
prototype.ViewerCheck = function(vector){
$("#check_vector").html(vector);
}
prototype.ViewerW = function(view) {
$("#matrix").html(view);
$("#matrix").show("drop", {
direction: "right"
}, 500);
$("#form_second").css({display: 'block'});
}
$(function(){
$('#form_first label').tooltip({
track: true,
delay: 100,
showBody: '::',
opacity: 0.85,
bodyHandler: function(){
return 'Введите образец для запоминания, это должен быть бинарный вектор состоящий из "1" и "-1" (через запятую) любой размерности (во вменяемый пределах =))';
}
});
$('#form_second label').tooltip({
track: true,
delay: 100,
showBody: '::',
opacity: 0.85,
bodyHandler: function(){
return 'Введите вектор, той же размерности, но с некоторыми отличиями (отличие во всех символах не будет восстановлено )';
}
});
$('#matrix').tooltip({
track: true,
delay: 100,
showBody: '::',
opacity: 0.85,
bodyHandler: function(){
return 'Матрица для запоминая введеного вектора';
}
});
$('#check_vector').tooltip({
track: true,
delay: 100,
showBody: '::',
opacity: 0.85,
bodyHandler: function(){
return 'Восстановленный вектор';
}
});
});
Представленные результаты и исследования подтверждают, что применение искусственного интеллекта в области реализация классического нейрона имеет потенциал для революции в различных связанных с данной темой сферах. Надеюсь, что теперь ты понял что такое реализация классического нейрона, сети хопфилда на javascript и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Вычислительный интеллект
Комментарии
Оставить комментарий
Вычислительный интеллект
Термины: Вычислительный интеллект