首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nd4j中的简单卷积

nd4j中的简单卷积
EN

Stack Overflow用户
提问于 2017-10-17 05:46:48
回答 1查看 351关注 0票数 2

我不能让简单的卷积在nd4j中工作,关于这个特定主题的文档也很少。我想要做的是:

代码语言:javascript
复制
INDArray values = Nd4j.create(new double[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10});
INDArray kernel = Nd4j.create(new double[]{0.5,0.5});

INDArray conv = Nd4j.getConvolution().convn(values, kernel, Convolution.Type.VALID);

无论是值还是卷积类型,我总是得到相同的异常(见下文)。错误似乎发生在nd4j试图将值数组转换为复杂数组以执行我认为的傅立叶变换时。

我尝试了几个版本的nd4j (0.9.1 - 0.8.0 - 0.7.0),但都没有用。有人能帮上忙吗?

代码语言:javascript
复制
Exception in thread "main" java.lang.UnsupportedOperationException
at org.nd4j.linalg.api.complex.BaseComplexNDArray.putScalar(BaseComplexNDArray.java:1947)
at org.nd4j.linalg.api.complex.BaseComplexNDArray.putScalar(BaseComplexNDArray.java:1804)
at org.nd4j.linalg.api.complex.BaseComplexNDArray.copyFromReal(BaseComplexNDArray.java:545)
at org.nd4j.linalg.api.complex.BaseComplexNDArray.<init>(BaseComplexNDArray.java:159)
at org.nd4j.linalg.api.complex.BaseComplexNDArray.<init>(BaseComplexNDArray.java:167)
at org.nd4j.linalg.cpu.nativecpu.complex.ComplexNDArray.<init>(ComplexNDArray.java:104)
at org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory.createComplex(CpuNDArrayFactory.java:166)
at org.nd4j.linalg.factory.Nd4j.createComplex(Nd4j.java:3345)
at org.nd4j.linalg.convolution.DefaultConvolutionInstance.convn(DefaultConvolutionInstance.java:116)
at org.nd4j.linalg.convolution.BaseConvolution.convn(BaseConvolution.java:66)
at com.example.demo.Main.testing(Main.java:41)
at com.example.demo.Main.main(Main.java:34)
EN

回答 1

Stack Overflow用户

发布于 2018-12-18 17:10:54

这有点棘手,因为ND4j目前不支持数学卷积。你必须制作你自己的实现。

代码语言:javascript
复制
    double[] rawData = {12,10,15,12,10,11,15,12,12};
    INDArray data = Nd4j.create(rawData);
    double[] rawFilter = {1.0 / 2, 0, 1.0 / 2};
    INDArray filter = Nd4j.create(rawFilter);        
    Nd4jConv1d convolution = new Nd4jConv1d(1, 1, (int) filter.shape()[1], 1, 0);
    INDArray output = convolution.forward(data, filter);

如图所示:https://github.com/deeplearning4j/deeplearning4j/blob/af7155d61dc810d3e7139f15f98810e0255b2e17/arbiter/arbiter-deeplearning4j/src/test/java/org/deeplearning4j/arbiter/multilayernetwork/MNISTOptimizationTest.java

注意:您需要一个额外的类Nd4jConv1d。到repo去获取它

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

https://stackoverflow.com/questions/46779601

复制
相关文章

相似问题

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