卷积和反卷积输出计算工具(Java实现)

编程实现卷积与反卷积输出计算,并且可以连续计算;

用于深度学习中网络结构设计;

输入输出都是方形张量;

在这里插入图片描述
在这里插入图片描述

完整代码:

import java.util.Scanner;

/**
 * @Author SunChonggao
 * @Date 2021/3/7 17:48
 * @Version 1.0
 * @Description: 卷积与反卷积输出计算
 */
public class ConvCalculator {
    public static void main(String[] args) {
        int type, input, kernel_size, padding, stride;
        System.out.println("  _    _                        \n" +
                " | |  | |                       \n" +
                " | |__| | __ _ _ __ _   _ _ __  \n" +
                " |  __  |/ _` | '__| | | | '_ \\ \n" +
                " | |  | | (_| | |  | |_| | | | |\n" +
                " |_|  |_|\\__,_|_|   \\__,_|_| |_|\n");
        System.out.println("Convolution Calculator");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请选择网络类型:[1]卷积 [2]反卷积");
        type = scanner.nextInt();
        do {
            double output = 0;
            do {
                if (output == 0) { // 第一层 输入input大小
                    System.out.print("input:");
                    input = scanner.nextInt();
                } else // 非第一层 上一层的输出作为本层的输入
                    input = (int) output;
                System.out.print("kernel_size:");
                kernel_size = scanner.nextInt();
                System.out.print("stride:");
                stride = scanner.nextInt();
                System.out.print("padding:");
                padding = scanner.nextInt();
                switch (type) {
                    case 1:
                        output = Math.floor((input + 2 * padding - kernel_size) / stride + 1);
                        break;
                    case 2:
                        output = (input - 1) * stride - 2 * padding + kernel_size;
                        break;
                    default:
                        System.out.println("输入错误!");
                }
                System.out.println("输出:" + (int)output);
                System.out.println("是否计算下一层? y / n");
            }
            while(scanner.next().equals("y"));
            System.out.println("请选择网络类型:[1]卷积 [2]反卷积 [3]退出");
            type = scanner.nextInt();
        }
        while(type < 3);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值