【DL4J】基本操作_学习笔记(二)

DL4J基本操作


导入依赖

			<nd4j.version>1.0.0-beta2</nd4j.version>

			<dependency>
                <groupId>org.nd4j</groupId>
                <artifactId>nd4j-native-platform</artifactId>
                <version>${nd4j.version}</version>
            </dependency>

1. 创建矩阵

/*
         构造一个3行5列的全0  ndarray
         */
        System.out.println("构造一个3行5列的全0  ndarray");
        INDArray zeros = Nd4j.zeros(3, 5);
        System.out.println(zeros);
        /*
            构造一个3行5列的全1 ndarray
         */
        System.out.println("构造一个3行5列的全1 ndarray");
        INDArray ones = Nd4j.ones(3, 5);
        System.out.println(ones);

        /*
            构造一个3行5列,数组元素均为随机产生的ndarray
         */
        System.out.println("构造一个3行5列,数组元素均为随机产生的ndarray");
        INDArray rands = Nd4j.rand(3, 5);
        System.out.println(rands);

        /*
            构造一个3行5列,数组元素服从高斯分布(平均值为0,标准差为1)的ndarray
         */
        System.out.println("构造一个3行5列,数组元素服从高斯分布(平均值为0,标准差为1)的ndarray");
        INDArray randns = Nd4j.randn(3, 5);
        System.out.println(randns);

        /*
            给一个一维数据,根据shape创造ndarray
         */
        System.out.println("给一个一维数据,根据shape创造ndarray");
        System.out.println("创建一个值全是2,一行四列的的ndarray");
        INDArray array1 = Nd4j.create(new float[]{2, 2, 2, 2}, new int[]{1, 4});
        System.out.println(array1);
        System.out.println("创建一个值全是2,2行2列的的ndarray");
        INDArray array2 = Nd4j.create(new float[]{2, 2, 2, 2}, new int[]{2, 2});
        System.out.println(array2);

请添加图片描述

2. 矩阵元素读取

		System.out.println("把一维数组转换成2行6列的  ndarray");
        INDArray nd = Nd4j.create(new float[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, new int[]{2, 6});
        System.out.println("打印原有数组");
        System.out.println(nd);

        /*
            获取指定索引的值
         */
        System.out.println("获取数组下标为0, 3的值");
        double value = nd.getDouble(0, 3);
        System.out.println(value);

        /*
            修改指定索引的值
         */
        System.out.println("修改数组下标为0, 3的值");
        //scalar 标量
        nd.putScalar(0, 3, 100);

        System.out.println(nd);
        /*
            使用索引迭代器遍历ndarray,使用c order
         */
        System.out.println("使用索引迭代器遍历ndarray");
        NdIndexIterator iter = new NdIndexIterator(2, 6);
        while (iter.hasNext()) {
            long[] nextIndex = iter.next();
            double nextVal = nd.getDouble(nextIndex);

            System.out.println(nextVal);
        }

请添加图片描述

3. 矩阵行元素读取

		INDArray nd = Nd4j.create(new float[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, new int[]{2, 6});
        System.out.println("原始数组");
        System.out.println(nd);

        /*
            获取一行
         */
        System.out.println("获取数组中的一行:第0行");
        INDArray singleRow = nd.getRow(0);
        System.out.println(singleRow);

        /*
            获取多行
         */
        System.out.println("获取数组中的多行:0行和1行");
        INDArray multiRows = nd.getRows(0, 1);
        System.out.println(multiRows);

        /*
            替换其中的一行
         */
        System.out.println("替换原有数组中的一行:把第0行替换掉");
        INDArray replaceRow = Nd4j.create(new float[]{1, 3, 5, 7, 9, 11});
        nd.putRow(0, replaceRow);
        System.out.println(nd);

请添加图片描述

4. 矩阵运算

		// 1x2的行向量
        INDArray nd = Nd4j.create(new float[]{1,2},new int[]{1, 2});
        // 2x1的列向量
        INDArray nd2 = Nd4j.create(new float[]{3,4},new int[]{2, 1}); //vector as column
        // 创造两个2x2的矩阵
        INDArray nd3 = Nd4j.create(new float[]{1,3,2,4},new int[]{2,2}); //elements arranged column major
        INDArray nd4 = Nd4j.create(new float[]{3,4,5,6},new int[]{2, 2});

        //打印
        System.out.println("打印1x2的行向量");
        System.out.println(nd);
        System.out.println("打印2x1的列向量");
        System.out.println(nd2);
        System.out.println("打印创造2x2的矩阵");
        System.out.println(nd3);
        System.out.println("打印创造2x2的矩阵");
        System.out.println(nd4);

        System.out.println("---------------");
        //1x2 and 2x1 -> 1x1
        System.out.println("打印1x2 and 2x1 -> 1x1");
        INDArray ndv = nd.mmul(nd2);
        System.out.println(ndv + ", shape = " + Arrays.toString(ndv.shape()));

        //1x2 and 2x2 -> 1x2
        System.out.println("打印1x2 and 2x2 -> 1x2");
        ndv = nd.mmul(nd4);
        System.out.println(ndv + ", shape = " + Arrays.toString(ndv.shape()));

        //2x2 and 2x2 -> 2x2
        System.out.println("打印2x2 and 2x2 -> 2x2");
        ndv = nd3.mmul(nd4);
        System.out.println(ndv + ", shape = " + Arrays.toString(ndv.shape()));

请添加图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君问归期魏有期

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值