mxnet中ndarray*ndarray用来作为掩码进行与运算的用法

2024-02-08 18:38

本文主要是介绍mxnet中ndarray*ndarray用来作为掩码进行与运算的用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

def batch_loss(encoder, decoder, X, Y, loss):batch_size = X.shape[0]enc_state = encoder.begin_state(batch_size=batch_size)enc_outputs, enc_state = encoder(X, enc_state)# 初始化解码器的隐藏状态dec_state = decoder.begin_state(enc_state)# 解码器在最初时间步的输入是BOSdec_input = nd.array([out_vocab.token_to_idx[BOS]] * batch_size)# 我们将使用掩码变量mask来忽略掉标签为填充项PAD的损失mask, num_not_pad_tokens = nd.ones(shape=(batch_size,)), 0bflag1=1print("调用我的bflag1=",bflag1,"type(bflag1)=",type(bflag1))if(bflag1 == 1):print("type(mask)=",type(mask),"origin mask=",mask,"mask.shape=",mask.shape)bflag1 = bflag1 +1l = nd.array([0])   for y in Y.T:if(bflag1==2):print("y=",y)bflag1 = bflag1+1dec_output, dec_state = decoder(dec_input, dec_state, enc_outputs)l = l + (mask * loss(dec_output, y)).sum()dec_input = y  # 使用强制教学num_not_pad_tokens += mask.sum().asscalar()# 当遇到EOS时,序列后面的词将均为PAD,相应位置的掩码设成0 mask = mask * (y != out_vocab.token_to_idx[EOS])if(bflag1==3):print("mask =",mask,"mask.shape=",mask.shape,"(y != out_vocab.token_to_idx[EOS])=",(y != out_vocab.token_to_idx[EOS]))bflag1 = bflag1+1return l / num_not_pad_tokens输出   注意mask 与 (y != out_vocab.token_to_idx[EOS])的结果都是ndarrayX= 
[[ 9. 30. 27. 45.  4.  3.  1.][12.  5. 44. 37. 16.  4.  3.]]
<NDArray 2x7 @cpu(0)> Y= 
[[ 7.  5. 31. 11. 18.  4.  3.][ 7.  5. 11. 27. 29.  4.  3.]]
<NDArray 2x7 @cpu(0)> Y.T= 
[[ 7.  7.][ 5.  5.][31. 11.][11. 27.][18. 29.][ 4.  4.][ 3.  3.]]
<NDArray 7x2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[7. 7.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[8. 9.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[8. 8.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[9. 8.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[7. 7.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[8. 8.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[7. 9.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[7. 9.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[9. 7.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[8. 9.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[8. 7.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[8. 9.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[9. 9.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[7. 8.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[7. 9.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[9. 7.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[7. 8.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[7. 8.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[8. 7.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
调用我的bflag1= 1 type(bflag1)= <class 'int'>
type(mask)= <class 'mxnet.ndarray.ndarray.NDArray'> origin mask= 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,)
y= 
[9. 8.]
<NDArray 2 @cpu(0)>
mask = 
[1. 1.]
<NDArray 2 @cpu(0)> mask.shape= (2,) (y != out_vocab.token_to_idx[EOS])= 
[1. 1.]
<NDArray 2 @cpu(0)>
(y != out_vocab.token_to_idx[EOS])= <class 'mxnet.ndarray.ndarray.NDArray'>

这篇关于mxnet中ndarray*ndarray用来作为掩码进行与运算的用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/691870

相关文章

#error用法

/* *检查编译此源文件的编译器是不是C++编译器 *如果使用的是C语言编译器则执行#error命令 *如果使用的是 C++ 编译器则跳过#error命令 */ #ifndef __cplusplus #error 亲,您当前使用的不是C++编译器噢! #endif #include <stdio.h> int main() {

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

SQL Server中,isnull()函数以及null的用法

SQL Serve中的isnull()函数:          isnull(value1,value2)         1、value1与value2的数据类型必须一致。         2、如果value1的值不为null,结果返回value1。         3、如果value1为null,结果返回vaule2的值。vaule2是你设定的值。        如

tensorboard-----summary用法总结

Tensorflow学习笔记——Summary用法         最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。 其中tensorboard 作为一款可视化神器,可以说是学习tensorflow时模型训练以及参数可视化的法宝。 而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍: 一、气象站的种类 根据用途和安装环境分类: 农业气象站:专为农业生产服务,监测土壤温度、湿度等参数,为农业生产提供科学依据。交通气象站:用于公路、铁路、机场等交通场所的气象监测,提供实时气象数据以支持交通运营和调度。林业气象站:监测林区风速、湿度、温度等气象要素,为林区保护和

企业如何进行员工的网络安全意识培训?

企业网络安全意识培训的重要性         企业网络安全意识培训是提升员工网络安全素质的关键环节。随着网络技术的快速发展,企业面临的网络安全威胁日益增多,员工的网络安全意识和技能水平直接关系到企业的信息安全和业务连续性。因此,企业需要通过系统的网络安全意识培训,提高员工对网络安全的认识和防范能力,从而降低企业在面对潜在安全风险时的损失和影响。 企业网络安全意识培训的方法         企

vscode-创建vue3项目-修改暗黑主题-常见错误-element插件标签-用法涉及问题

文章目录 1.vscode创建运行编译vue3项目2.添加项目资源3.添加element-plus元素4.修改为暗黑主题4.1.在main.js主文件中引入暗黑样式4.2.添加自定义样式文件4.3.html页面html标签添加样式 5.常见错误5.1.未使用变量5.2.关闭typescript检查5.3.调试器支持5.4.允许未到达代码和未定义代码 6.element常用标签6.1.下拉列表

使用JWT进行安全通信

在现代Web应用中,安全通信是至关重要的。JSON Web Token(JWT)是一种流行的安全通信方式,它允许用户和服务器之间安全地传输信息。JWT是一种紧凑的、URL安全的表示方法,用于在两方之间传输信息。本文将详细介绍JWT的工作原理,并提供代码示例帮助新人理解和实现JWT。 什么是JWT? JWT是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSO

ccp之间是不可以直接进行+,-的,要用ccpSub和ccpAdd。

1.  http://www.cnblogs.com/buaashine/archive/2012/11/12/2765691.html  上面有好多的关于数学的方面的知识,cocos2dx可能会用到的 2.学到了   根据tilemap坐标得到层上物体的id int oneTiled=flagLayer->tileGIDt(tilePos);