Евклидова функция веса расстояния
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