DataVec/数据拆分/数字标记文件名

2019-03-25  本文已影响0人  hello风一样的男子
package org.datavec.inputsplit;

import org.datavec.api.split.NumberedFileInputSplit;

import java.net.URI;

/**
 * 
 * 当你有一系列以数字命名的文件时,{@link org.datavec.api.split.NumberedFileInputSplit}是很有用的,
 * 遵循一个共同的模式。例如,如果你的目录包含以下格式的文件:
 * file1.txt
 * file2.txt
 * file3.txt
 * file4.txt
 * ...
 * file100.txt
 * 然后 {@link org.datavec.api.split.NumberedFileInputSplit}
 * 可以按如下方式使用:
 * {@code NumberedFileInputSplit numberedFileInputSplit = new NumberedFileInputSplit("file%d.txt",1,100);}.
 * 如你所见,在构造器中,indexes, starting/ending被包括
 * 另外,请记住,你只能以"\%(0\d)?d"的形式指定基本字符串正则表达式。因为这只会以顺序格式生成文件路径。
 */
public class Ex03_NumberedFileInputSplitExample {
    public static void main(String[] args) {

        /*
          A basic usage of the NumberedFileInputSplit is shown below:
          如下显示的是NumberedFileInputSplit的基本用法:
          指定部分非绝对路径 (例如 "file%d.txt" 将用根工作目录的绝对路径(和一个文件://schema)预先设置路径. 例如:
          "file:///E:/Projects/Java/dl4j-examples/datavec-examples/file5.txt"
         */
        NumberedFileInputSplit split1 = new NumberedFileInputSplit("file%d.txt",1,5);

        System.out.println("--------------- 示例 1: 加载简单的数字标记文件 ---------------");
        URI[] split1Uris = split1.locations();
        for (URI uri: split1Uris) {
            System.out.println(uri);
        }
        System.out.println("------------------------------------------------------------\n\n\n");

        /*
       
          有时文件用前面为0编号。例如
          file001.txt
          file002.txt
          ...
          file425.txt
          这通常是为了更容易阅读文件名,并使它们具有相同的长度。
          由于NumberedFileInputSplit在内部使用String.format(),因此我们可以遵循零开头字符串模式,
          例如:“prefix-%03d.suffix”,其中%03d将把编号文件格式化为最多3位的0开头。
         */
        NumberedFileInputSplit split2 = new NumberedFileInputSplit("/path/to/files/prefix-%03d.suffix",
            1,
            15);

        System.out.println("--------------- 示例 2: 加载有0开头的文件 ---------------");
        URI[] split2Uris = split2.locations();
        for (URI uri: split2Uris) {
            System.out.println(uri);
        }
        System.out.println("------------------------------------------------------------\n\n\n");

        /*
          有关如何使用String.format()格式化的更多示例,你可以访问此链接:
          https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax
          确保只使用类型为“%d”的格式
          此外,你还可以在这里看到单元测试的更多示例:
          https://github.com/deeplearning4j/deeplearning4j/blob/79d4110eee96f6b7f331931f4775233c4264d999/datavec/datavec-api/src/test/java/org/datavec/api/split/NumberedFileInputSplitTests.java
         */
    }
}



翻译:风一样的男子

image
上一篇下一篇

猜你喜欢

热点阅读