Tensorrt 原生Activate 算子讲解

Tensorrt operators docs:

Activation

Apply an activation function on an input tensor A and produce an output tensor B with the same dimensions.

import numpy as np
from cuda import cudart
import tensorrt as trt
# 输入张量 NCHW
nIn, cIn, hIn, wIn = 1, 1, 3, 3  
# 输入数据
data = np.arange(-4, 5, dtype=np.float32).reshape(nIn, cIn, hIn, wIn) 
np.set_printoptions(precision=8, linewidth=200, suppress=True)
cudart.cudaDeviceSynchronize()
logger = trt.Logger(trt.Logger.ERROR)
builder = trt.Builder(logger)
network = builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH))
config = builder.create_builder_config()
inputT0 = network.add_input('inputT0', trt.DataType.FLOAT, (nIn, cIn, hIn, wIn))
#-------------------------------------------------------------------------------# 替换部分
# 这里演示使用 ReLU 激活函数
# 也可以替换成你想用的激活函数
activationLayer = network.add_activation(inputT0, trt.ActivationType.RELU)      
#-------------------------------------------------------------------------------# 替换部分
network.mark_output(activationLayer.get_output(0))
engineString = builder.build_serialized_network(network, config)
engine = trt.Runtime(logger).deserialize_cuda_engine(engineString)
context = engine.create_execution_context()
_, stream = cudart.cudaStreamCreate()
inputH0 = np.ascontiguousarray(data.reshape(-1))
outputH0 = np.empty(context.get_binding_shape(1), dtype=trt.nptype(engine.get_binding_dtype(1)))
_, inputD0 = cudart.cudaMallocAsync(inputH0.nbytes, stream)
_, outputD0 = cudart.cudaMallocAsync(outputH0.nbytes, stream)
cudart.cudaMemcpyAsync(inputD0, inputH0.ctypes.data, inputH0.nbytes, cudart.cudaMemcpyKind.cudaMemcpyHostToDevice, stream)
context.execute_async_v2([int(inputD0), int(outputD0)], stream)
cudart.cudaMemcpyAsync(outputH0.ctypes.data, outputD0, outputH0.nbytes, cudart.cudaMemcpyKind.cudaMemcpyDeviceToHost, stream)
cudart.cudaStreamSynchronize(stream)
print("inputH0 :", data.shape)
print(data)
print("outputH0:", outputH0.shape)
print(outputH0)cudart.cudaStreamDestroy(stream)
cudart.cudaFree(inputD0)
cudart.cudaFree(outputD0)

其中:data是一个形状为(1, 1, 3, 3)的4D NumPy数组,表示一个1x1通道的3x3输入图像。它的数据范围从-4到4。

np.set_printoptions()是NumPy库中用于设置打印数组选项的函数。它允许您设置NumPy数组的打印输出的格式,如精度、行宽和是否使用科学计数法。 precision=8: 设置浮点数的打印精度为 8 位小数。这意味着打印浮点数时,会显示小数点后 8 位数字。对于超过 8 位小数的浮点数,将四舍五入保留 8 位小数。

import numpy as np# 创建一个包含小数的 NumPy 数组
data = np.array([0.123456789, 1234.56789, 123456.789], dtype=np.float32)# 默认打印输出
print("默认打印输出:")
print(data)# 设置打印选项
np.set_printoptions(precision=2, linewidth=20, suppress=True)# 使用设置后的打印输出
print("\n使用设置后的打印输出:")
print(data)

 其中输入

inputH0 : (1, 1, 3, 3)
[[[[-4. -3. -2.][-1.  0.  1.][ 2.  3.  4.]]]]
outputH0: (1, 1, 3, 3)
[[[[0. 0. 0.][0. 0. 1.][2. 3. 4.]]]]
(<cudaError_t.cudaSuccess: 0>,)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Scrum敏捷开发流程图怎么画?

1. 什么是Scrum敏捷开发流程图&#xff1f; Scrum敏捷开发流程图是一种可视化工具&#xff0c;用于形象地描述Scrum敏捷开发方法中的工作流程和活动。Scrum敏捷开发流程图展示了项目从需求收集到产品交付的整个开发过程&#xff0c;帮助团队理解和跟踪项目进展&#xff0c;促…

02.Redis实现添加缓存功能

学习目标&#xff1a; 提示&#xff1a;学习如何利用Redis实现添加缓存功能 学习产出&#xff1a; 流程图 1. 准备pom环境 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId&g…

C++中选择正确的数据类型以免发生溢出错误

C中选择正确的数据类型以免发生溢出错误 诸如 short、int、long、unsigned short、unsigned int、unsigned long 等数据类型的容量有限&#xff0c;如果算术运算的结果超出了选定数据类型的上限&#xff0c;将导致溢出。 就拿 unsigned short 来说吧&#xff0c;它占用 16 位内…

EXCEL,多条件查询数字/文本内容的4种方法

目录 1 问题&#xff1a;如何根据多条件查询到想要的内容 2 方法总结 2.1 方法1&#xff1a; sumif() 和sumifs() 适合查找符合条件的多个数值之和 2.2 方法2&#xff1a;使用lookup(1,0/((区域1条件1)*(区域2条件2)*....),结果查询区域) 2.3 方法3&#xff1a;使用 ind…

使用redis的一些心得

1.可以编写xx.bat文件去快速启动redis 例如&#xff1a;服务端启动.bat redis-server.exe redis.windows.conf redis-server.exe redis.windows.conf --启动redis服务端的命令&#xff08;并按照默认的配置方式&#xff09; redis-cli.exe -h localhost -p 6379 -a 123456--启动…

广西茶叶元宇宙 武隆以茶为媒 推动茶文旅产业融合发展

8月4日&#xff0c;重庆市武隆区启动为期3天的“武隆首届玩茶荟”。本次活动以“中国最美玩茶地——武隆”为主题&#xff0c;吸引众多国内知名专家、茶企和茶馆相关负责人&#xff0c;共同探索武隆茶文旅融合发展新路径和新业态。 广西茶叶元宇宙&#xff1a;广西茶叶元宇宙 …

React安装ant design组件库,并使用

ant design是一个很棒的组件库&#xff0c;官方地址&#xff1a;快速上手 - Ant Design 但是如何在React里面用起来&#xff0c;好像并不是很顺畅&#xff0c;没有像Vue里面那么友好&#xff0c;因为我踩过这个坑&#xff0c;虽然安装很简单&#xff0c;但是想要出样式&#x…

合并两个有序链表(leetcode)

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]思路 每次递归都会比较当前两个节点的值&#xff0c;选择较小的节点作为合并后的链…

edge://settings/defaultbrowser default ie

Microsoft Edge 中的 Internet Explorer 模式 有些网站专为与 Internet Explorer 一起使用&#xff0c;它们具有 Microsoft Edge 等新式浏览器不支持的功能。 如果你需要查看其中的某个网站&#xff0c;可使用 Microsoft Edge 中的 Internet Explorer 模式。 大多数网站在新…

读取视频关键帧图片

思路&#xff0c;用video播放视频到某一秒&#xff0c;之后用canvas把video画成一张图片&#xff0c;从而在客户端得到视频关键帧图片&#xff0c;实现还有一些细节处理 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"…

判定是否互为字符重排、回文排列

题1&#xff1a;判定是否互为字符重排 给定两个由小写字母组成的字符串 s1 和 s2&#xff0c;请编写一个程序&#xff0c;确定其中一个字符串的字符重新排列后&#xff0c;能否变成另一个字符串。 输入: s1 "abc", s2 "bca" 输出: true 输入: s1 &quo…

Java:如何破坏类加载器的双亲委派机制?

本文重点 我们前面分析过loadClass方法,我们可以发现,这个方法的逻辑就是双亲委派机制,也就是说只要不破坏这个方法,那么就不会破坏双亲委派机制。如果要想破坏双亲委派机制,我们需要在类中重写loadClass方法,只要这样,那么就不会走双亲委派机制了。 破坏还是不破坏双…

2023-08-05力扣今日五题-好题

链接&#xff1a; 剑指 Offer 52. 两个链表的第一个公共节点 题意&#xff1a; 如题 解&#xff1a; 非常有趣的双指针 首先我们不管他们是否有公共段啊&#xff0c;我们要知道一个指针从A出发走到A结尾&#xff0c;再从B出发走到B结尾&#xff0c;和从B出发最终到A结尾是…

麦肯锡战略思维四大原则

麦肯锡战略思维四大原则 曾任职麦肯锡、安永等国家国际知名咨询机构的周正元&#xff0c;在其著作《麦肯锡结构化战略思维》将其系统的整理呈现出来&#xff0c;便于学习和使用。 模型介绍 工作中的你&#xff0c;是不是经常遇到复杂问题&#xff0c;六神无主&#xff1f; 专业…

ObjectMapper常见用法(Intro to the Jackson ObjectMapper)

maven依赖 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.14.2</version> </dependency>Data AllArgsConstructor NoArgsConstructor public class…

JAVA语言:如何自定义类加载器?

本文重点 前面的课程中&#xff0c;我们已经学习了双亲委派机制&#xff0c;如果想要自定义一个类加载器&#xff0c;那么我们只需要继承ClassLoader&#xff0c;并且定义好自己的findClass就可以了&#xff0c;也就是自己的类加载器是如何进行工作的&#xff0c;而loadClass就…

C++ operator关键字的使用(重载运算符、仿函数、类型转换操作符)

目录 定义operator重载运算符operator重载函数调用运算符operator类型转换操作符 定义 C11 中&#xff0c;operator 是一个关键字&#xff0c;用于重载运算符。通过重载运算符&#xff0c;您可以定义自定义类型的对象在使用内置运算符时的行为。 operator重载用法一般可以分为…

Java thymeleaf bug排查记录

刚学Java 做项目时报了一个错误 一时间看的莫名其妙 EL1008E: Property or field createTime cannot be found on object of type java.util.HashMap - maybe not public or not valid? 随即向上排查至第一个报错&#xff0c;发现是thymeleaf渲染时报错。 Exception proces…

【Python从入门到进阶】31、使用JSONPath解析淘票票网站地区接口数据

接上篇《30、JSONPath的介绍和使用》 上一篇我们介绍了JSONPath的基础和具体使用&#xff0c;本篇我们来具体使用JSONPath&#xff0c;来解析淘票票网站的地区接口数据。 一、引言 1、JsonPath的作用和用途&#xff1f; JsonPath是一种用于在JSON数据中进行查询和提取的表达…

【Jmeter】压测mysql数据库中间件mycat

目录 背景 环境准备 1、下载Jmeter 2、下载mysql数据库的驱动包 3、要进行测试的数据库 Jmeter配置 1、启动Jmeter图形界面 2、加载mysql驱动包 3、新建一个线程组&#xff0c;然后如下图所示添加 JDBC Connection Configuration 4、配置JDBC Connection Configurati…