java - 在 ND4J/DL4J 中重用归一化器

标签 java deeplearning4j nd4j

我想知道在 ND4J/DL4J 中重用标准化器的正确方法是什么。目前,我保存如下:

final DataNormalization normalizer = new NormalizerStandardize();
normalizer.fit( trainingData );
normalizer.transform( trainingData );
normalizer.transform( testData );

try {
    final NormalizerSerializer normalizerSerializer = new NormalizerSerializer();
    normalizerSerializer.addStrategy( new StandardizeSerializerStrategy() );
    normalizerSerializer.write( normalizer, path );
} catch ( final IOException e ) {
    // ...
}

并通过以下方式加载它:

try {
    final NormalizerSerializer normalizerSerializer = new NormalizerSerializer();
    normalizerSerializer.addStrategy( new StandardizeSerializerStrategy() );
    final DataNormalization normalizer = normalizerSerializer.restore( path );
} catch ( final Exception e ) { // Throws Exception instead of IOException.
    // ...
}

可以吗?遗憾的是,我无法在文档中找到更多信息。

最佳答案

这就是我做的...

DataNormalization normalizer = new NormaizerStandardize();
normalizer.fit(trainingData);
normalizer.transform(trainingData);

保存

NormalizerSerializer saver = NormalizerSerializer.getDefaults();
File normalsFile = new File("fileName");
saver.write(normalizer,normalsFile);

恢复它

NormalizerSerializer loader = NormalizerSerializer.getDefaults();
DataNormalization restoredNormalizer = loader.restore(normalsFile);
restoredNormalizer.transform(testData);

ND4J Java 文档说 .getDefaults() 获取一个序列化器,配置了内置规范化器实现的策略。当您使用 NormalizerStandardize 时,getDefaults() 提供了一种无需显式添加策略即可达到相同目的的快捷方式。

关于java - 在 ND4J/DL4J 中重用归一化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45332181/

相关文章:

java - 构建 NeuralNetConfiguration 配置类时出现 deeplearning4j 错误 : org. nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException

java - DeepLearning4j k-均值非常慢

java - JOptionPane 变量可能尚未初始化

java - JTextField 事件的正则表达式不起作用?

java - 是否有标准的 Java NonNullable<T> 泛型,如果没有,为什么不呢?

machine-learning - 深度学习书: What's the meaning of Pa in this section?

machine-learning - 为什么深度残差网络中的每个 block 都有两个卷积层而不是一个?

java - 使用 Apache-POI 读取一定数量的列

android - Nd4j (Deeplearning4J) 是否太大而无法在 Android 移动应用程序中实际使用?

linux - 尝试分配内存映射 INDArray 时出现内存不足错误