标签: deeplearning4j

deeplearning4j - 使用RNN/LSTM进行音频信号处理

我正在尝试使用deeplearning4j训练RNN进行数字(音频)信号处理.我们的想法是拥有2个.wav文件:一个是录音,第二个是相同的录音但是经过处理(例如使用低通滤波器).RNN的输入是第一个(未处理的)音频记录,输出是第二个(已处理的)音频记录.

我已经使用了dl4j示例中的GravesLSTMCharModellingExample,并且大部分都使用了CharacterIterator类来接受音频数据而不是文本.

我使用dl4j处理音频的第一个项目基本上与GravesLSTMCharModellingExample做同样的事情,但生成音频而不是文本,使用11025Hz 8位单声道音频,这是有效的(对于一些非常有趣的结果).因此,在这种情况下使用音频的基础知识似乎有效.

因此,第2步是将其用于音频处理而不是音频生成.

不幸的是,我没有取得多大成功.它似乎能够做的最好的是输出一个非常嘈杂的输入版本.

作为"健全性检查",我已经测试了输入和输出使用相同的音频文件,我希望它能够快速收敛到模型,只需复制输入.但事实并非如此.再次,经过长时间的训练,它似乎能够做的就是产生一个噪音更大的输入版本.

我猜的最相关的代码是DataSetIterator.next()方法(改编自示例的CharacterIterator类),现在看起来像这样:

public DataSet next(int num) {
    if (exampleStartOffsets.size() == 0)
        throw new NoSuchElementException();

    int currMinibatchSize = Math.min(num, exampleStartOffsets.size());
    // Allocate space:
    // Note the order here:
    // dimension 0 = number of examples in minibatch
    // dimension 1 = size of each vector (i.e., number of characters)
    // dimension 2 = length of each time series/example
    // Why 'f' order here? See http://deeplearning4j.org/usingrnns.html#data
    // section "Alternative: Implementing a custom …
Run Code Online (Sandbox Code Playgroud)

java machine-learning audio-processing deeplearning4j

13
推荐指数
1
解决办法
913
查看次数

Gensim库是否支持GPU加速?

使用Gensim提供的Word2vec和Doc2vec方法,他们有一个使用BLAS,ATLAS等加速的分布式版本(详情请参见此处).但是,它支持GPU模式吗?如果使用Gensim,是否可以让GPU工作?

optimization gpu gensim deeplearning4j

12
推荐指数
1
解决办法
8212
查看次数

org.nd4j.linalg.factory.Nd4jBackend $ NoAvailableBackendException

我不知道它对我有什么要求.我在用

    <dependency>
        <groupId>org.deeplearning4j</groupId>
        <artifactId>deeplearning4j-core</artifactId>
        <version>${deeplearning4j.version}</version>
    </dependency>

    <dependency>
        <groupId>org.deeplearning4j</groupId>
        <artifactId>deeplearning4j-nlp</artifactId>
        <version>${deeplearning4j.version}</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

哪里

<deeplearning4j.version>0.4-rc3.8</deeplearning4j.version>
Run Code Online (Sandbox Code Playgroud)

但我得到了

Caused by: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: null
    at org.nd4j.linalg.factory.Nd4jBackend.load(Nd4jBackend.java:148) ~[nd4j-api-0.4-rc3.7.jar:na]
    at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:4498) ~[nd4j-api-0.4-rc3.7.jar:na]
    ... 53 common frames omitted
Run Code Online (Sandbox Code Playgroud)

如果我尝试加载Google字矢量模型:

@RequestMapping("/loadModel")
public Boolean loadModel(@RequestParam(value="model") String model) {

    Resource resource = appContext.getResource("WEB-INF/word-vector-models/" + model);

    try {
        File modelFile = resource.getFile();

        System.err.println(modelFile.getAbsolutePath());
        WordVectors googleModel = WordVectorSerializer.loadGoogleModel(modelFile, true);
        this.wordVectorsMap.put(model, googleModel);
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)

java deeplearning4j

11
推荐指数
1
解决办法
8446
查看次数

Java中的RNTN实现

我想在java中实现递归神经张量网络(RNTN).

我已经将Deeplearning4j用于word2vec管道来矢量化单词语料库.

对于NLP管道,我使用过Opennlp.(用于标记化,POStaging和解析)

现在,我发现我需要一个RNTN用于我的目的,我没有找到太多的支持,任何参考都会有所帮助.许多库都是用R或python编写的,甚至是用Scala编写的,而大多数人使用的NLP管道都是stanfordnlp.但是我想用Opennlp和java来做这件事.

之后,我想将单词向量与神经网络结合起来,然后完成我想做的事情,比如情绪分析.

我该怎么办?任何输入都会有所帮助.

谢谢.

java neural-network opennlp word2vec deeplearning4j

11
推荐指数
1
解决办法
784
查看次数

神经网络返回 NaN 作为输出

我正在尝试编写我的第一个神经网络来玩游戏连接四。我使用 Java 和 deeplearning4j。我试图实现一个遗传算法,但是当我训练网络一段时间时,网络的输出跳到 NaN,我无法说出我在哪里搞砸了如此严重的事情。我将发布所有 3 个类下面,其中 Game 是游戏逻辑和规则,VGFrame 是 UI,Main 是所有 nn 的东西。

我有一个由 35 个神经网络组成的池,每次迭代我都会让最好的 5 个存活并繁殖,并稍微随机化新创建的神经网络。为了评估网络,我让他们互相争斗,然后给胜者加分,之后输给分数。由于我将一块石头放入已经满的列中,我希望神经网络至少能够在一段时间后按照规则玩游戏,但他们不能这样做。我用谷歌搜索了 NaN 问题,它似乎是一个梯度梯度问题,但据我所知,这不应该发生在遗传算法中?我可以在哪里查找错误或我的实现通常有什么问题的任何想法?

主要的

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Random;

import org.deeplearning4j.nn.api.OptimizationAlgorithm;
import org.deeplearning4j.nn.conf.MultiLayerConfiguration;
import org.deeplearning4j.nn.conf.NeuralNetConfiguration;
import org.deeplearning4j.nn.conf.layers.DenseLayer;
import org.deeplearning4j.nn.conf.layers.OutputLayer;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.nn.weights.WeightInit;
import org.nd4j.linalg.activations.Activation;
import org.nd4j.linalg.api.ndarray.INDArray;
import org.nd4j.linalg.lossfunctions.LossFunctions.LossFunction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.nd4j.linalg.factory.Nd4j;
import org.nd4j.linalg.learning.config.Nesterovs;

public class Main {
    final int numRows = 7;
    final int numColums = 6;
    final int randSeed = 123;
    MultiLayerNetwork[] models;

    static …
Run Code Online (Sandbox Code Playgroud)

java nan neural-network deeplearning4j

9
推荐指数
1
解决办法
264
查看次数

DL4J在GoogleNews-vectors文件上超级慢

我尝试在DL4J上执行以下示例(加载预先训练的矢量文件):

File gModel = new File("./GoogleNews-vectors-negative300.bin.gz");

Word2Vec vec = WordVectorSerializer.loadGoogleModel(gModel, true);

InputStreamReader r = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(r);

for (; ; ) {
    System.out.print("Word: ");
    String word = br.readLine();

    if ("EXIT".equals(word)) break;

    Collection<String> lst = vec.wordsNearest(word, 20);

    System.out.println(word + " -> " + lst);
}
Run Code Online (Sandbox Code Playgroud)

但它超级慢(计算最近的单词需要大约10分钟,尽管它们是正确的).

有足够的内存(-Xms20g -Xmx20g).

当我从https://code.google.com/p/word2vec/运行相同的Word2Vec示例时

它非常快地给出最近的单词.

DL4J使用的ND4J声称速度是Numpy的两倍:http://nd4j.org/benchmarking

我的代码有什么问题吗?

更新:它基于https://github.com/deeplearning4j/dl4j-0.4-examples.git(我没有触及任何依赖项,只是试图阅读谷歌预先训练的矢量文件).Word2VecRawTextExample工作正常(但数据大小相对较小).

machine-learning word2vec deep-learning nd4j deeplearning4j

8
推荐指数
1
解决办法
881
查看次数

是否可以在 deeplearning4j.word2vec 中使用 gensim word2vec 模型?

我是 deeplearning4j 的新手,我想使用词向量作为分类器的输入来制作句子分类器。我之前使用 python,其中使用 gensim 生成矢量模型,我想将该模型用于这个新分类器。是否可以在 deeplearning4j.word2vec 中使用 gensim 的 word2vec 模型,我该怎么做?

java gensim word2vec deeplearning4j

6
推荐指数
1
解决办法
2704
查看次数

最适合R-CNN,快速R-CNN,更快的R-CNN和YOLO之间的对象定位

R-CNN,快速R-CNN,快速R-CNN和YOLO在以下方面有什么区别:(1)同一图像集的精度(2)给定相同的图像大小,运行时间(3)支持android移植

考虑这三个标准,哪个是最佳对象定位技术?

deep-learning deeplearning4j

6
推荐指数
2
解决办法
1106
查看次数

来自 sbt-assembly 的 FatJar 抛出 java.lang.NoClassDefFoundError

我正在尝试使用 spark 和 deepLearning4J 执行一个用 sbt-assembly 构建的胖罐子,不幸的是在执行过程中我遇到了线程“main”java.lang.NoClassDefFoundError 中异常:许多罐子的错误。我尝试使用 spark-submit 中的 --jars 选项添加 jar,但是当我添加 jar 时,我遇到了来自另一个依赖项的另一个类的相同错误。

如果我理解得很好,sbt-assembly 生成的 FatJar 应该可以防止这种问题,因为它包含所有需要的 jar。

我的 Scala 文件在myproject/src/main/scala/xxx/spark/yyy/

也许是由于合并策略?

如果有帮助,我加入我的 build.sbt 文件!

先感谢您。

name := "myproject"

version := "1.0"

scalaVersion := "2.10.4"

val sparkVersion = "1.6.2"

mainClass in assembly := Some("xxx.spark.yyy.Main")

resolvers += Resolver.sojava.lang.NoClassDefFoundErrornatypeRepo("releases")

resolvers += "Spark Packages Repo" at "https://dl.bintray.com/spark-packages/maven"

resolvers += "Akka Snapshot Repository" at "http://repo.akka.io/snapshots/"

resolvers += "Artifactory" at "http://artifacts.kameleoon.net:8081/artifactory/sbt/"

resolvers += "Sbt plugins" at "https://dl.bintray.com/sbt/sbt-plugin-releases"

resolvers …
Run Code Online (Sandbox Code Playgroud)

runtime-error sbt sbt-assembly apache-spark deeplearning4j

5
推荐指数
0
解决办法
1076
查看次数

如何从 ND4j 中的 NDArray 中选择给定的一组索引,类似于 numpy 的 arraydata[arrayIndex]?

我正在使用 ND4j(目前版本 1.0.0-beta5)开发一个严重依赖 Java 数组操作的科学应用程序。在整个管道中,我需要动态选择 [2,195102] 矩阵的不连续子集(更精确地说是几十/数百列)。知道如何在这个框架中实现这一目标吗?

简而言之,我正在尝试实现这个 python/numpy 操作:

import numpy as np
arrayData = np.array([[1, 5, 0, 6, 2, 0, 9, 0, 5, 2],
       [3, 6, 1, 0, 4, 3, 1, 4, 8, 1]])
arrayIndex = np.array((1,5,6))
res  = arrayData[:, arrayIndex]
# res value is
# array([[5, 0, 9],
#        [6, 3, 1]])
Run Code Online (Sandbox Code Playgroud)

到目前为止,我设法使用NDArray.getColumns函数(以及 indexArray 中的 NDArray.data().asInt() 来提供索引值)选择所需的列。问题在于,文档明确指出,关于计算过程中的信息检索,“请注意,这不应该用于速度”(请参阅​​ NDArray.ToIntMatrix()的文档以查看完整消息 - 不同的方法,相同的操作)。

我查看了NDArray.get()的不同原型,但似乎没有一个符合要求。我认为NDArray.getWhere()可能会起作用 - 如果它像我假设的那样只返回满足条件的元素 - 但到目前为止,使用它并不成功。在解释所需的参数/用法时,文档相对较少。

感谢大家的时间和帮助:)

编辑(04/11/2019):关于我所尝试的一些精确性。我尝试了 NDArray.get() 并使用了索引: …

java arrays nd4j deeplearning4j

5
推荐指数
1
解决办法
735
查看次数