Евклидова функция веса расстояния
Z = dist(W,P,FP)
dim = dist('size',S,R,FP)
dw = dist('dw',W,P,Z,FP)
D = dist(pos)
info = dist('code
')
Функции веса применяют веса к входу, чтобы получить взвешенные входные параметры.
Z = dist(W,P,FP)
берет эти входные параметры,
W |
|
P |
|
FP | Struct параметров функции (дополнительный, проигнорированный) |
и возвращает S
- Q
матрица векторных расстояний.
dim = dist('size',S,R,FP)
берет размерность слоя S
, введите размерность R
, и параметры функции, и возвращают размер веса [S
- R
].
dw = dist('dw',W,P,Z,FP)
возвращает производную Z
относительно W
.
dist
также функция расстояния слоя, которая может использоваться, чтобы найти расстояния между нейронами в слое.
D = dist(pos)
берет один аргумент,
pos |
|
и возвращает S
- S
матрица расстояний.
info = dist('
возвращает информацию об этой функции. Следующие коды поддерживаются: code
')
'deriv' | Имя производной функции |
'fullderiv' | Полная производная = 1, линейная производная = 0 |
'pfullderiv' | Входной параметр: уменьшаемая производная = 2, полная производная = 1, линейная производная = 0 |
'name' | Полное имя |
'fpnames' | Возвращает имена параметров функции |
'fpdefaults' | Возвращает параметры функции по умолчанию |
Здесь вы задаете случайную матрицу веса W
и входной вектор P
и вычислите соответствующий взвешенный вход Z
.
W = rand(4,3); P = rand(3,1); Z = dist(W,P)
Здесь вы задаете случайную матрицу положений для 10 нейронов, расположенных в 3-мерном пространстве, и находите их расстояния.
pos = rand(3,10); D = dist(pos)
Можно создать стандартную сеть, которая использует dist
путем вызова newpnn
или newgrnn
.
Чтобы изменить сеть так, входной вес использует dist
, установите net.inputWeights{i,j}.weightFcn
к 'dist'
. Для веса слоя, набор net.layerWeights{i,j}.weightFcn
к 'dist'
.
Изменить сеть так, чтобы топология слоя использовала dist
, установите net.layers{i}.distanceFcn
к 'dist'
.
В любом случае вызовите sim
симулировать сеть с dist
.
Евклидово расстояние d
между двумя векторами X
и Y
d = sum((x-y).^2).^0.5