首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于nd4j的乙状结肠导数

基于nd4j的乙状结肠导数
EN

Stack Overflow用户
提问于 2018-12-27 10:10:17
回答 1查看 139关注 0票数 0

我执行sigmoid,这很好,但是sigmoidDerivative给出的结果与nd4j中的sigmoid相同。Transforms.sigmoidDerivative(x)Transforms.sigmoidDerivative(x, true)有什么区别?

代码语言:javascript
复制
INDArray x = Nd4j.create(new double[] { 0.1812, 0.1235, 0.8466 });
System.out.println(x);
System.out.println(Transforms.sigmoid(x));
System.out.println(Transforms.sigmoidDerivative(x));
System.out.println(Transforms.sigmoidDerivative(x, true));

给出输出:

代码语言:javascript
复制
[[    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相比:

代码语言:javascript
复制
>>> 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 pom:

代码语言:javascript
复制
<dependency>
     <groupId>org.nd4j</groupId>
     <artifactId>nd4j-native-platform</artifactId>
     <version>1.0.0-beta3</version>
</dependency>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-19 08:10:24

您是对的,Transforms.sigmoidDerivative(x)Transforms.sigmoidDerivative(x, true)都应该给出相同的结果,这是dl4j中的一个错误。正确的行为采用后一种方法。我已经提交了一个拉请求来解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53943251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档