我正在尝试制作一个实现迭代条件模式(ICM)技术的函数。
它应该通过坐标梯度上升来工作。xi
必须首先通过设置xi=yi
all来初始化i
。然后,一次取每个节点xj
,用于评估两种可能状态的总能量xj = +1
和xj = -1
。
所有节点都保持固定,并xj
设置为具有较低能量的状态。因此,概率将保持不变,如果xj
不变,或者它会增加。
我采用基于 Ising 能量模型的函数,如 Bishop 机器学习书中的那样。我遍历矩阵,并尝试提取一个值是否大于另一个值。但是,我不确定我在尝试执行的操作上是否正确。
有人可以帮忙吗?
ICM <- function(y, h, beta, eta) {
v <- y*-1
val1 <- (energy(y, x, h, beta, eta))
val2 <- (energy(v, x, h, beta, eta))
for (i in 1:nrow(y)) {
for (j in 1:ncol(y)) {
if (val1) > (val2),
x(i,j)=- 1;
else
x(i,j)= 1;
}
}
return x
}