1

我正在尝试制作一个实现迭代条件模式(ICM)技术的函数。

它应该通过坐标梯度上升来工作。xi必须首先通过设置xi=yiall来初始化i。然后,一次取每个节点xj,用于评估两种可能状态的总能量xj = +1xj = -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
}
4

0 回答 0