Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用nd4j的Sigmoid导数_Java_Python_Python 3.x_Numpy_Nd4j - Fatal编程技术网

Java 使用nd4j的Sigmoid导数

Java 使用nd4j的Sigmoid导数,java,python,python-3.x,numpy,nd4j,Java,Python,Python 3.x,Numpy,Nd4j,我执行的是sigmoid,它工作得很好,但SigmoidEnvivative给出的结果与nd4j中的sigmoid相同。Transforms.sigmoidevirative(x)和Transforms.sigmoidevirative(x,true)之间有什么区别 给出输出: [[ 0.1812, 0.1235, 0.8466]] [[ 0.5452, 0.5308, 0.6999]] [[ 0.5452, 0.5308, 0.6999]]

我执行的是sigmoid,它工作得很好,但SigmoidEnvivative给出的结果与nd4j中的sigmoid相同。
Transforms.sigmoidevirative(x)
Transforms.sigmoidevirative(x,true)
之间有什么区别

给出输出:

[[    0.1812,    0.1235,    0.8466]]
[[    0.5452,    0.5308,    0.6999]]
[[    0.5452,    0.5308,    0.6999]]
[[    0.2480,    0.2490,    0.2101]]
与python的numpy相比:

>>> def sigmoid(x):
...     return 1.0 / (1 + np.exp(-x))
... 
>>> def sigmoid_derivative(x):
...     a = sigmoid(x)
...     return a * (1.0 - a)

>>> x = np.array([    0.1812,    0.1235,    0.8466])
>>> sigmoid(x)
array([0.54517646, 0.53083582, 0.69985343])
>>> sigmoid_derivative(x)
array([0.24795909, 0.24904915, 0.21005861])
Nd4j聚甲醛:

<dependency>
     <groupId>org.nd4j</groupId>
     <artifactId>nd4j-native-platform</artifactId>
     <version>1.0.0-beta3</version>
</dependency>

org.nd4j
nd4j本机平台
1.0.0-beta3

你是对的,无论是
转换.sigmoidevirative(x)
还是
转换.sigmoidevirative(x,true)
都应该给出相同的结果,这是dl4j中的一个bug。正确的行为有后一种方法。我已经提交了一份解决方案。

FYI:sigmoid_导数(x)的实现不正确。它应该是
y=sigmoid(x);返回y*(1-y)
nd4j代码也有问题。输出的第三行应该是
sigmoidevirative(x)
,与第二行相同,即
sigmoid(x)
。Facepalm@WarrenWeckesser你是对的,我的python实现是错的。将我的python代码更正为:
>>def sigmoid_导数(x):。。。a=乙状结肠(x)。。。返回a*(1.0-a)
给出输出:
数组([0.24795909,0.24904915,0.21005861])
实际更改
System.out.println(Transforms.sigmoidevivative(x))
System.out.println(Transforms.sigmoidevirative(x,true))
给出了预期的sigmoid导数
[[0.2480,0.2490,0.2101]]
谢谢!编辑问题
<dependency>
     <groupId>org.nd4j</groupId>
     <artifactId>nd4j-native-platform</artifactId>
     <version>1.0.0-beta3</version>
</dependency>