gpt4 book ai didi

java - 二维数组的 Sigmoid 函数

转载 作者:行者123 更新时间:2023-12-01 10:55:54 35 4
gpt4 key购买 nike

有没有一种方法可以在不使用像 JAMA 这样的外部库的情况下找到 2D 数组的 sigmoid ?我尝试了以下代码,但失败了。

public static double[][] sigmoid(double[][] x, boolean deriv){
for (int i = 0; i <x.length ; i++)
{
for (int j = 0; j < x[1].length; j++){
if(deriv == false){
return sigmoid(x[i][j], false) * (1 - sigmoid(x[i][j], false));
}
return (1/(1 + Math.pow(Math.E, (-1 * x[i][j]))));
}
}
}

它说,无法将 double 转换为 double[][]。任何解决此问题的方法将不胜感激。谢谢!

最佳答案

这是对数组 x 进行逐元素 sigmoid 运算的函数:

public static double sigmoid(double t) {
return 1 / (1 + Math.pow(Math.E, (-1 * t)));
}

public static double[][] sigmoid(double[][] x, boolean deriv) {
double[][] = result = new double[x.length][x[0].length];

for (int i = 0; i < x.length; i++) {
for (int j = 0; j < x[i].length; j++) {
double sigmoidCell = sigmoid(x[i][j]);

if (deriv == true) {
result[i][j] = sigmoidCell * (1 - sigmoidCell);
} else {
result[i][j] = sigmoidCell;
}
}
}

return result;
}

在您的方法中,存在一些语法错误,以及永远不会结束的递归语句,因为 deriv 始终为 false。此外,递归语句计算 double ,不返回任何二维数组。

如果您要做的不止于此,我建议您创建减法、点乘和创建矩阵的方法。

关于java - 二维数组的 Sigmoid 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33612029/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com