无法在 Linux 中构建 ParagraphVectors
Can't build ParagraphVectors in Linux
我将 Doc2Vec 算法与 Deeplearning4j 一起使用,当我在我的 Windows 10 PC 上 运行 它工作正常,但是当我尝试 运行 它在 Linux 框,我收到以下错误:
java.lang.NoClassDefFoundError: Could not initialize class org.nd4j.linalg.factory.Nd4j
at org.deeplearning4j.models.embeddings.inmemory.InMemoryLookupTable$Builder.<init>(InMemoryLookupTable.java:581) ~[run.jar:?]
at org.deeplearning4j.models.sequencevectors.SequenceVectors$Builder.presetTables(SequenceVectors.java:801) ~[run.jar:?]
at org.deeplearning4j.models.paragraphvectors.ParagraphVectors$Builder.build(ParagraphVectors.java:663) ~[run.jar:?]
我已经在几台 Linux 机器上试过了,它们都是 运行ning Xubuntu 并且有 sudo 权限
这是创建我的 ParagraphVectors 的代码:
InputStream is = new ByteArrayInputStream(baos.toByteArray());
LabelAwareSentenceIterator iter;
iter = new LabelAwareListSentenceIterator(is, DELIM);
iter.setPreProcessor(new SentencePreProcessor() {
@Override
public String preProcess(String sentence) {
return new InputHomogenization(sentence).transform();
}
});
TokenizerFactory tokenizerFactory = new DefaultTokenizerFactory();
vec = new ParagraphVectors.Builder().minWordFrequency(minWordFrequency).batchSize(batchSize)
.iterations(iterations).layerSize(layerSize).stopWords(stopWords).windowSize(windowSize)
.learningRate(learningRate).tokenizerFactory(tokenizerFactory).iterate(iter).build();
vec.fit();
这是我的 pom.xml(版本都是 0.7.1,但我一直在使用 0.4-rc3.9 并得到同样的错误):
<dependency>
<groupId>org.deeplearning4j</groupId>
<artifactId>deeplearning4j-ui-model</artifactId>
<version>${dl4j.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.deeplearning4j</groupId>
<artifactId>deeplearning4j-nlp</artifactId>
<version>${dl4j.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.nd4j</groupId>
<artifactId>nd4j-native</artifactId>
<version>${nd4j.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.datavec/datavec-api -->
<dependency>
<groupId>org.datavec</groupId>
<artifactId>datavec-api</artifactId>
<version>${nd4j.version}</version>
</dependency>
始终首先坚持使用最新版本。你能 post 完整的堆栈跟踪吗?这绝对不是根本原因。也许尝试使用 nd4j-native-platform 代替?通常这是缺少原生工件的问题。
我将 Doc2Vec 算法与 Deeplearning4j 一起使用,当我在我的 Windows 10 PC 上 运行 它工作正常,但是当我尝试 运行 它在 Linux 框,我收到以下错误:
java.lang.NoClassDefFoundError: Could not initialize class org.nd4j.linalg.factory.Nd4j
at org.deeplearning4j.models.embeddings.inmemory.InMemoryLookupTable$Builder.<init>(InMemoryLookupTable.java:581) ~[run.jar:?]
at org.deeplearning4j.models.sequencevectors.SequenceVectors$Builder.presetTables(SequenceVectors.java:801) ~[run.jar:?]
at org.deeplearning4j.models.paragraphvectors.ParagraphVectors$Builder.build(ParagraphVectors.java:663) ~[run.jar:?]
我已经在几台 Linux 机器上试过了,它们都是 运行ning Xubuntu 并且有 sudo 权限
这是创建我的 ParagraphVectors 的代码: InputStream is = new ByteArrayInputStream(baos.toByteArray());
LabelAwareSentenceIterator iter;
iter = new LabelAwareListSentenceIterator(is, DELIM);
iter.setPreProcessor(new SentencePreProcessor() {
@Override
public String preProcess(String sentence) {
return new InputHomogenization(sentence).transform();
}
});
TokenizerFactory tokenizerFactory = new DefaultTokenizerFactory();
vec = new ParagraphVectors.Builder().minWordFrequency(minWordFrequency).batchSize(batchSize)
.iterations(iterations).layerSize(layerSize).stopWords(stopWords).windowSize(windowSize)
.learningRate(learningRate).tokenizerFactory(tokenizerFactory).iterate(iter).build();
vec.fit();
这是我的 pom.xml(版本都是 0.7.1,但我一直在使用 0.4-rc3.9 并得到同样的错误):
<dependency>
<groupId>org.deeplearning4j</groupId>
<artifactId>deeplearning4j-ui-model</artifactId>
<version>${dl4j.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.deeplearning4j</groupId>
<artifactId>deeplearning4j-nlp</artifactId>
<version>${dl4j.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.nd4j</groupId>
<artifactId>nd4j-native</artifactId>
<version>${nd4j.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.datavec/datavec-api -->
<dependency>
<groupId>org.datavec</groupId>
<artifactId>datavec-api</artifactId>
<version>${nd4j.version}</version>
</dependency>
始终首先坚持使用最新版本。你能 post 完整的堆栈跟踪吗?这绝对不是根本原因。也许尝试使用 nd4j-native-platform 代替?通常这是缺少原生工件的问题。