java计算卷积

本文展示了如何使用Java进行卷积计算,包括手动计算、利用ND4J库的矩阵乘法和原生操作。代码示例中,通过ND4J进行了im2col转换、权重初始化和卷积操作。
摘要由CSDN通过智能技术生成

卷积是如何计算的

按照一般的思维都是按照kernel一个一个计算的,但是工业用一般是用minibatch 矩阵乘法, 为了加速,会专门写针对cpu的底层计算native方法。具体看三种计算代码,没有加入bias。

import org.nd4j.linalg.api.buffer.DataType;
import org.nd4j.linalg.api.ndarray.INDArray;
import org.nd4j.linalg.api.ops.OpContext;
import org.nd4j.linalg.api.ops.impl.layers.convolution.Conv2D;
import org.nd4j.linalg.api.shape.Shape;
import org.nd4j.linalg.convolution.Convolution;
import org.nd4j.linalg.factory.Nd4j;

/**
 * 
 */

public class ClassTest
{

    public static void main( String[] args )
    {
        //manu( );
        nativeOP( );
    }

    private static void testArrray( )
    {
        INDArray col = Nd4j.createUninitialized( DataType.FLOAT, new long[]{
                1, 4, 4, 1, 3, 3
        }, 'c' );
        INDArray col2 = col.permute( 0, 3, 4, 5, 1, 2 );

        INDArray input = Nd4j.create( new float[][][][]{
                new float[][][]{
                        new float[][]{
                                new float[]{
                                        1, 2, 3, 4, 5, 6
                                }, new float[]{
                                        2, 2, 3, 4, 5, 6
                                }, new float[]{
                                        3, 2, 3, 4, 5, 6
                                }, new float[]{
                                        4, 2, 3, 4, 5, 6
                                }, new float[]{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值