基于PyTorch深度学习实战入门系列-张量计算

Torch的使用-张量计算

比较函数
函数功能
allclose()比较两个元素是否接近
eq()逐元素比较是否相等
equal()判断两个张量是否具有相同的形状和元素
ge()逐元素比较是否大于等于
gt()逐元素比较是否大于
le()逐元素比较是否小于等于
lt()逐元素比较是否大于
ne()逐元素比较不等于
isnan()判断是否为缺失值
比较两个元素是否接近

input(Tensor) -第一个要比较的张量

other(Tensor) -要比较的第二张量

atol(float,可选的) -绝对宽容。默认值:1e-08

rtol(float,可选的) -相对公差。默认值:1e-05

equal_nan(bool,可选的) -如果 True ,则两个 NaN 将被视为相等。默认值:False

此函数检查是否所有 input 和 other 都满足条件:

∣ i n p u t − o t h e r ∣ ≤ a t o l + r t o l ∗ ∣ o t h e r ∣ |input - other| \le atol + rtol * |other| inputotheratol+rtolother

逐元素比较是否相等
# 逐元素比较是否相等
tensor1 = torch.Tensor([i for i in range(10)])
tensor2 = torch.arange(0, 10)
tensor3 = torch.unsqueeze(tensor2, dim=0)
print(tensor1)
print(tensor2)
print(tensor3)
# 逐元素比较是否相等
print(torch.eq(tensor1, tensor2))
print(torch.eq(tensor1, tensor3))

输出:

tensor([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
tensor([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
tensor([True, True, True, True, True, True, True, True, True, True])
tensor([[True, True, True, True, True, True, True, True, True, True]])
判断两个张量是否具有相同的形状和元素:
tensor1 = torch.Tensor([i for i in range(10)])
tensor2 = torch.arange(0, 10)
tensor3 = torch.unsqueeze(tensor2, dim=0)
print(tensor1)
print(tensor2)
print(tensor3)
# 判断两个张量是否具有相同的形状和元素
print(torch.equal(tensor1, tensor2))
print(torch.equal(tensor1, tensor3))

输出:

tensor([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
tensor([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
True
False
逐元素比较:
# 逐元素比较大小
tensor1 = torch.Tensor([i for i in range(10)])
tensor2 = torch.randperm(10)
print(tensor1)
print(tensor2)
# 是否大于等于
print(torch.ge(tensor1, tensor2))
# 是否大于
print(torch.gt(tensor1, tensor2))
# 是否小于等于
print(torch.le(tensor1, tensor2))
# 是否小于
print(torch.lt(tensor1, tensor2))
# 逐元素比较不等于
print(torch.ne(tensor1, tensor2))
# 判断是否为缺失值
print(torch.isnan(tensor1))

输出:

tensor([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
tensor([4, 6, 2, 9, 8, 0, 5, 3, 7, 1])
tensor([False, False,  True, False, False,  True,  True,  True,  True,  True])
tensor([False, False, False, False, False,  True,  True,  True,  True,  True])
tensor([ True,  True,  True,  True,  True, False, False, False, False, False])
tensor([ True,  True, False,  True,  True, False, False, False, False, False])
tensor([ True,  True, False,  True,  True,  True,  True,  True,  True,  True])
tensor([False, False, False, False, False, False, False, False, False, False])
逐元素加减乘除:
# 逐元素加减乘除
tensor1 = torch.Tensor([i for i in range(1, 11)])
tensor2 = torch.randperm(10) + 1
print(tensor1)
print(tensor2)
# +
print(tensor1 + tensor2)
# -
print(tensor1 - tensor2)
# *
print(tensor1 * tensor2)
# /
print(tensor1 / tensor2)
# //
print(tensor1 // tensor2)

输出:

tensor([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])
tensor([ 1,  2,  9,  5,  7,  6, 10,  8,  4,  3])
tensor([ 2.,  4., 12.,  9., 12., 12., 17., 16., 13., 13.])
tensor([ 0.,  0., -6., -1., -2.,  0., -3.,  0.,  5.,  7.])
tensor([ 1.,  4., 27., 20., 35., 36., 70., 64., 36., 30.])
tensor([1.0000, 1.0000, 0.3333, 0.8000, 0.7143, 1.0000, 0.7000, 1.0000, 2.2500,
        3.3333])
tensor([1., 1., 0., 0., 0., 1., 0., 1., 2., 3.])
张量的幂:
# 张量的幂
tensor1 = torch.Tensor([i for i in range(10)])
print(torch.pow(tensor1, 2))
print(tensor1 ** 2)

输出:

tensor([ 0.,  1.,  4.,  9., 16., 25., 36., 49., 64., 81.])
tensor([ 0.,  1.,  4.,  9., 16., 25., 36., 49., 64., 81.])
指数、对数、平方根、平方根倒数:
# 张量的指数、对数、平方根、平方根倒数
tensor1 = torch.Tensor([i for i in range(10)])
print(tensor1)
# 指数
print(torch.exp(tensor1))
# 对数
print(torch.log(tensor1))
# 平方根
print(torch.sqrt(tensor1))
# 平方根倒数
print(torch.rsqrt(tensor1))

输出:

tensor([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
tensor([1.0000e+00, 2.7183e+00, 7.3891e+00, 2.0086e+01, 5.4598e+01, 1.4841e+02,
        4.0343e+02, 1.0966e+03, 2.9810e+03, 8.1031e+03])
tensor([  -inf, 0.0000, 0.6931, 1.0986, 1.3863, 1.6094, 1.7918, 1.9459, 2.0794,
        2.1972])
tensor([0.0000, 1.0000, 1.4142, 1.7321, 2.0000, 2.2361, 2.4495, 2.6458, 2.8284,
        3.0000])
tensor([   inf, 1.0000, 0.7071, 0.5774, 0.5000, 0.4472, 0.4082, 0.3780, 0.3536,
        0.3333])
张量的剪裁:
# 张量的剪裁
tensor1 = torch.Tensor([i for i in range(10)]).reshape(2, 5)
print(tensor1)
# 根据最大值剪裁
print(torch.clamp_max(tensor1, 6))
# 根据最小值剪裁
print(torch.clamp_min(tensor1, 3))
# 根据范围剪裁
print(torch.clamp(tensor1, 2, 8))

输出:

tensor([[0., 1., 2., 3., 4.],
        [5., 6., 7., 8., 9.]])
tensor([[0., 1., 2., 3., 4.],
        [5., 6., 6., 6., 6.]])
tensor([[3., 3., 3., 3., 4.],
        [5., 6., 7., 8., 9.]])
tensor([[2., 2., 2., 3., 4.],
        [5., 6., 7., 8., 8.]])
矩阵操作:
# 矩阵操作
tensor1 = torch.rand(4, 4) * 10
tensor2 = torch.randperm(8).reshape(4, 2).float()
print(tensor1)
print(tensor2)
# 转置
print(torch.t(tensor1))
# 逆
print(torch.inverse(tensor1))
# 矩阵乘法
print(tensor1.matmul(tensor2))
# 矩阵的迹
print(torch.trace(torch.arange(16).reshape(4, 4)))

输出:

tensor([[0.5914, 5.7943, 3.5240, 0.5632],
        [5.6683, 3.1371, 4.2062, 5.3590],
        [9.8913, 8.4539, 9.0679, 0.7691],
        [3.1266, 7.2945, 4.9690, 2.4820]])
tensor([[5., 7.],
        [0., 3.],
        [2., 6.],
        [4., 1.]])
tensor([[0.5914, 5.6683, 9.8913, 3.1266],
        [5.7943, 3.1371, 8.4539, 7.2945],
        [3.5240, 4.2062, 9.0679, 4.9690],
        [0.5632, 5.3590, 0.7691, 2.4820]])
tensor([[-1.0311, -0.3084,  0.0610,  0.8810],
        [-0.9460, -0.4209, -0.0636,  1.1432],
        [ 2.0004,  0.7119,  0.1128, -2.0258],
        [ 0.0743,  0.2005, -0.1159, -0.0110]])
tensor([[ 12.2578,  43.2300],
        [ 58.1902,  79.6860],
        [ 70.6687, 149.7774],
        [ 35.4989,  76.0656]])
tensor(30)
统计计算:
# 统计计算
tensor1 = torch.randperm(10)
print(tensor1)
# 最大值
print(f"最大值:{tensor1.max()}")
print(f"最大值:{torch.max(tensor1)}")
# 最小值
print(f"最小值:{tensor1.min()}")
print(f"最小值:{torch.min(tensor1)}")
# 最大值的下标
print(f"最大值下标:{tensor1.argmax()}")
print(f"最大值下标:{torch.argmax(tensor1)}")
# 最小值的下标
print(f"最小值下标:{tensor1.argmin()}")
print(f"最小值下标:{torch.argmin(tensor1)}")

输出:

tensor([2, 6, 7, 4, 1, 9, 5, 0, 8, 3])
最大值:9
最大值:9
最小值:0
最小值:0
最大值下标:5
最大值下标:5
最小值下标:7
最小值下标:7
二维张量:
# 二维张量统计计算
tensor1 = torch.randperm(16).reshape(4, 4)
print(tensor1)
# 最大值 行
print(tensor1.max(dim=1))
print(torch.max(tensor1, dim=1))
# 最大值索引
print(tensor1.argmax(dim=1))
print(torch.argmax(tensor1, dim=1))
# 最大值 列
print(tensor1.max(dim=0))
print(torch.min(tensor1, dim=0))
# 最小值索引
print(tensor1.argmin(dim=0))
print(torch.argmin(tensor1, dim=0))

输出:

tensor([[ 2, 13,  7, 14],
        [11,  0, 15,  3],
        [ 5,  6,  4,  1],
        [10,  9,  8, 12]])
torch.return_types.max(
values=tensor([14, 15,  6, 12]),
indices=tensor([3, 2, 1, 3]))
torch.return_types.max(
values=tensor([14, 15,  6, 12]),
indices=tensor([3, 2, 1, 3]))
tensor([3, 2, 1, 3])
tensor([3, 2, 1, 3])
torch.return_types.max(
values=tensor([11, 13, 15, 14]),
indices=tensor([1, 0, 1, 0]))
torch.return_types.min(
values=tensor([2, 0, 4, 1]),
indices=tensor([0, 1, 2, 2]))
tensor([0, 1, 2, 2])
tensor([0, 1, 2, 2])
排序:
print(torch.argmin(tensor1, dim=0))
# 排序
tensor1 = torch.randperm(10)
print(tensor1)
# 升序
print(torch.sort(tensor1, descending=False))
# 降序
print(torch.sort(tensor1, descending=True))

输出:

tensor([4, 0, 8, 7, 2, 5, 3, 6, 9, 1])
torch.return_types.sort(
values=tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
indices=tensor([1, 9, 4, 6, 0, 5, 7, 3, 2, 8]))
torch.return_types.sort(
values=tensor([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]),
indices=tensor([8, 2, 3, 7, 5, 0, 6, 4, 9, 1]))
二维张量排序:
# 二维张量排序
tensor1 = torch.randperm(16).reshape(4, 4)
print(tensor1)
print(torch.sort(tensor1))

输出:

tensor([[ 7,  2,  5, 13],
        [12,  4,  1, 10],
        [ 9,  3, 11, 14],
        [15,  0,  6,  8]])
torch.return_types.sort(
values=tensor([[ 2,  5,  7, 13],
        [ 1,  4, 10, 12],
        [ 3,  9, 11, 14],
        [ 0,  6,  8, 15]]),
indices=tensor([[1, 2, 0, 3],
        [2, 1, 3, 0],
        [1, 0, 2, 3],
        [1, 2, 3, 0]]))
平均值:
# 平均值
tensor1 = torch.randperm(16).reshape(4, 4).to(dtype=torch.float64)
print(tensor1)
# 按行求平均值
print(torch.mean(tensor1, dim=1, keepdim=True))
# 按列求平均值
print(torch.mean(tensor1, dim=0, keepdim=True))

输出:

tensor([[ 6.,  8.,  9.,  5.],
        [ 0., 11.,  1.,  3.],
        [15.,  4.,  7., 10.],
        [ 2., 12., 13., 14.]], dtype=torch.float64)
tensor([[ 7.0000],
        [ 3.7500],
        [ 9.0000],
        [10.2500]], dtype=torch.float64)
tensor([[5.7500, 8.7500, 7.5000, 8.0000]], dtype=torch.float64)
求和:
# 求和
tensor1 = torch.randperm(16).reshape(4, 4).to(dtype=torch.float64)
print(tensor1)
# 按行求和
print(torch.sum(tensor1, dim=1, keepdim=True))
# 按列求和
print(torch.sum(tensor1, dim=0, keepdim=True))

输出:

tensor([[ 9.,  1.,  7.,  2.],
        [10.,  3., 11.,  8.],
        [ 0.,  5., 12., 13.],
        [ 4.,  6., 15., 14.]], dtype=torch.float64)
tensor([[19.],
        [32.],
        [30.],
        [39.]], dtype=torch.float64)
tensor([[23., 15., 45., 37.]], dtype=torch.float64)
累加和:
# 累加和
tensor1 = torch.randperm(16).reshape(4, 4)
print(tensor1)
# 按行求累加和
print(torch.cumsum(tensor1, dim=1))
# 按列求累加和
print(torch.cumsum(tensor1, dim=0))

输出:

tensor([[14, 13,  7,  3],
        [ 2,  4,  1, 15],
        [ 0, 12,  8,  5],
        [10, 11,  9,  6]])
tensor([[14, 27, 34, 37],
        [ 2,  6,  7, 22],
        [ 0, 12, 20, 25],
        [10, 21, 30, 36]])
tensor([[14, 13,  7,  3],
        [16, 17,  8, 18],
        [16, 29, 16, 23],
        [26, 40, 25, 29]])
中位数:
# 中位数
tensor1 = torch.randperm(16).reshape(4, 4)
print(tensor1)
# 按行求中位数
print(torch.median(tensor1, dim=1))
# 按列求中位数
print(torch.median(tensor1, dim=0))

输出:

tensor([[ 0,  3,  5,  2],
        [ 7, 15, 14, 11],
        [10,  8,  9,  1],
        [13, 12,  4,  6]])
torch.return_types.median(
values=tensor([ 2, 11,  8,  6]),
indices=tensor([3, 3, 1, 3]))
torch.return_types.median(
values=tensor([7, 8, 5, 2]),
indices=tensor([1, 2, 0, 0]))
标准差:
# 标准差
tensor1 = torch.randperm(16).reshape(4, 4).to(dtype=torch.float64)
print(tensor1)
# 按行求标准差
print(torch.std(tensor1, dim=1))
# 按列求标准差
print(torch.std(tensor1, dim=0))

输出:

tensor([[ 3., 10.,  2., 12.],
        [ 6., 14.,  4.,  5.],
        [ 7.,  8., 15.,  0.],
        [ 9., 13.,  1., 11.]], dtype=torch.float64)
tensor([4.9917, 4.5735, 6.1373, 5.2599], dtype=torch.float64)
tensor([2.5000, 2.7538, 6.4550, 5.5976], dtype=torch.float64)
乘积:
# 乘积
tensor1 = torch.randperm(16).reshape(4, 4).to(dtype=torch.float64)
print(tensor1)
# 按行乘积
print(torch.prod(tensor1, dim=1, keepdim=True))
# 按列乘积
print(torch.prod(tensor1, dim=0, keepdim=True))

输出:

tensor([[ 6., 11.,  8.,  4.],
        [14.,  3.,  9., 15.],
        [ 2.,  7.,  0., 12.],
        [13.,  1.,  5., 10.]], dtype=torch.float64)
tensor([[2112.],
        [5670.],
        [   0.],
        [ 650.]], dtype=torch.float64)
tensor([[2184.,  231.,    0., 7200.]], dtype=torch.float64)
累乘:
# 累乘
tensor1 = torch.randperm(16).reshape(4, 4)
print(tensor1)
# 按行求累乘
print(torch.cumprod(tensor1, dim=1))
# 按列求累乘
print(torch.cumprod(tensor1, dim=0))

输出:

tensor([[15,  6,  0,  8],
        [10, 11, 13,  9],
        [ 2,  3, 12,  1],
        [14,  5,  4,  7]])
tensor([[   15,    90,     0,     0],
        [   10,   110,  1430, 12870],
        [    2,     6,    72,    72],
        [   14,    70,   280,  1960]])
tensor([[  15,    6,    0,    8],
        [ 150,   66,    0,   72],
        [ 300,  198,    0,   72],
        [4200,  990,    0,  504]])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/498255.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024蓝桥杯每日一题(背包2)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一:包子凑数 试题二:砝码称重 试题三:倍数问题 试题一:包子称重 【题目描述】 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有 N 种蒸笼&#xf…

row_number 函数和关联更新

生成测试数据,房间号数据如下: CREATE TABLE hotel (floor_nbr,room_nbr) ASSELECT 1,100 FROM DUAL UNION ALLSELECT 1,100 FROM DUAL UNION ALLSELECT 2,100 FROM DUAL UNION ALLSELECT 2,100 FROM DUAL UNION ALLSELECT 3,100 FROM DUAL; 里面的房间号…

Ubuntu18.04安装wireshark

安装wireshark 环境Ubuntu18.04 1.使用root用户进行安装 2.将 wireshark-dev/stable PPA 添加到系统的软件源列表中。系统就可以从该PPA获取Wireshark软件包及其更新了。 apt-add-repository ppa:wireshark-dev/stable3.确保你系统上的软件包信息是最新的,这样在…

若依 3.8.7版本springboot前后端分离 整合mabatis plus

1.去掉mybatis 这一步我没有操作&#xff0c;看别人的博客有说不去掉可能冲突&#xff0c;也可能不冲突&#xff0c;我试下来就没去掉如需要去除&#xff0c;到总的pom.xml中properties标签下的<mybatis-spring-boot.version>x.x.x</mybatis-spring-boot.version>…

灰色预测模型以及matlab软件使用

1&#xff0c;灰色系统简介 著名学者邓聚龙教授于20世纪70年代末、80年代初提出&#xff1a; “ The诞生标志:邓教授第一篇灰色系统论文Control Problems of Grey Systems”&#xff0c;发表于北荷兰出版公司期刊 System & Control Letter,1982, No.5. 1.1 灰色系统&…

|行业洞察·香氛|《小红书2023香水香氛营销宝典-71页》

报告内容的详细解读&#xff1a; 行业格局 预计到2025年&#xff0c;香水市场规模将超过300亿&#xff0c;小红书成为香水种草的重要平台。从2018年到2025年&#xff0c;市场规模持续增长&#xff0c;年增速保持在20%左右。香水市场的热度在节日节点尤为明显&#xff0c;如情…

Golang-Gorm-快速上手

Gorm文档 GORM文档地址 安装依赖 go get -u "gorm.io/driver/mysql"go get -u "gorm.io/gorm"连接数据库 默认连接方式 func main() {// 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情dsn : "user:passtcp(127.0.0…

docker:在ubuntu中运行docker容器

前言 1 本笔记本电脑运行的ubuntu20.04系统 2 docker运行在ubuntu20.04系统 3 docker镜像使用的是ubuntu18.04&#xff0c;这样拉的 docker pull ubuntu:18.04 4 docker容器中运行的是ubuntu18.04的系统&#xff0c;嗯就是严谨 5 这纯粹是学习笔记&#xff0c;实际上没啥价值。…

JAVA 源码分析Integer的128陷阱

128陷阱介绍及演示 首先什么是128陷阱&#xff1f; Integer包装类两个值大小在-128到127之间时可以判断两个数相等&#xff0c;因为两个会公用同一个对象&#xff0c;返回true&#xff0c; 但是超过这个范围两个数就会不等&#xff0c;因为会变成两个对象&#xff0c;返回fal…

Linux第85步_EXTI外部中断

1、在stm32mp157d-atk.dts文件中添加“led0”和“key0”节点 打开虚拟机上“VSCode”&#xff0c;点击“文件”&#xff0c;点击“打开文件夹”&#xff0c;点击“zgq”&#xff0c;点击“linux”&#xff0c;点击“atk-mp1”&#xff0c;点击“linux”&#xff0c;点击“my_l…

RecyclerView 调用 notifyItemInserted 自动滚动到底部的问题

项目中发现一个奇怪的现象 RecyclerView 加载完数据以后&#xff0c;调用 notifyItemInserted 方法&#xff0c;RecyclerView 会滑动到底部。 简化后的效果图&#xff1a; 因为这个 RecyclerView 的适配器有一个 FootViewHolder&#xff0c;所以怀疑是 FootViewHolder 的问题…

金属氧化物压敏电阻的冲击破坏机理高能压敏电阻分析

以氧化锌为主的金属氧化物阀片在一定的电压和电流作用下的破坏可分为热破坏和冲击破坏两类。 热破坏是指氧化锌电阻在交流电压持续作用时发生的破坏,即由于阀片在交流作用下的发热超过了其散热能力而导致的热平衡失控的现象。交流引起的热破坏可以分为几种不同情况:一种是由于…

unity学习(76)--窗口化和后台运行

1.通过如下方式将编译的游戏设置为窗口模式。 成功&#xff1a; 2.现在只有鼠标点击的窗体游戏运动&#xff0c;其他窗体游戏都会卡住。 2.1build setting中 2.2unity内部Project Settings 也被同步修改了

生成式 AI 学习资源大汇总

这里汇聚了该领域的海量学习资源&#xff0c;从研究更新到面试技巧&#xff0c;从课程材料到免费课程&#xff0c;还有实用代码&#xff0c;一应俱全&#xff0c;是你工作流程中的得力助手&#xff01; 前沿研究&#xff1a;每月精心筛选的最佳生成式 AI 论文列表&#xff0c;让…

SpringMVC学习记录

SpringMVC简介与配置 SpringMVC是一种基于Java实现MCV模型的轻量级Web框架&#xff0c;我们该如何使用呢&#xff1f; 首先在Maven中添加坐标 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><ver…

iOS UIFont-实现三方字体的下载和使用

UIFont 系列传送门 第一弹加载本地字体:iOS UIFont-新增第三方字体 第二弹加载线上字体:iOS UIFont-实现三方字体的下载和使用 前言 在上一章我们完成啦如何加载使用本地的字体。如果我们有很多的字体可供用户选择,我们当然可以全部使用本地字体加载方式,可是这样就增加了…

算法---动态规划练习-7(按摩师)【类似打家劫舍】

按摩师 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;点这里 2. 讲解算法原理 首先&#xff0c;给定一个整数数组 nums&#xff0c;其中 nums[i] 表示第 i 天的预约时间长度。 定义两个辅助数组 f 和 g&#xff0c;长度都为 n&#xff08;n 是数组…

STM32时钟简介

1、复位&#xff1a;使时钟恢复原始状态 就是将寄存器状态恢复到复位值 STM32E10xxx支持三种复位形式,分别为系统复位、上电复位和备份区域复位。 复位分类&#xff1a; 1.1系统复位 除了时钟控制器的RCC_CSR寄存器中的复位标志位和备份区域中的寄存器以外,系统 复位将复位…

SQL-CRUD-2数据库实验

目录 第一关任务描述 相关知识 插入完整内容的行 插入选定内容的行 编程要求 测试说明 第一关代码 第二关任务描述 相关知识 删除表中的指定行 删除表中的所有行 编程要求 测试说明 第二关代码 第三关任务描述 相关知识 更新表中的指定行 编程要求 测试说明…

【学习】信创产品软件测试企业建设参考清单

“信创&#xff0c;即信息技术应用创新产业&#xff0c;涉及IT基础设施、基础软件、应用软件、信息安全等方面&#xff0c;产品覆盖面广、专业性强。作为目前的一项国家战略&#xff0c;也是当今形势下国家经济发展的新动能&#xff0c;信创产业发展已经成为促进经济数字化转型…