【torch】如何把给定mask按比例选取再次划分mask?

news2024/10/7 20:28:26

背景

在以torch为基础的很多框架下有一些集成的数据集,数据集往往自带已经划分好的mask。但是如何能够把框架给出的mask再次划分?比如按比例划分出来80%的train mask。

解决

新生成一个每个元素都是0-1分布的与mask2的true位置相同的矩阵,用0.7作为threshold分别把数字转化成True或者False。
以转化后的mask2作为划分的mask。
这样大概率是train mask的70%被选取出来。

于是,
1)先生成一个0.7概率的每个位置都是伯努利分布的tensor
2)

train_mask=dataset['train_mask']

p=0.7*torch.ones(3,4)
mask70=torch.bernoulli(p).bool()
new_mask=train_mask & mask70

(有没有更好的办法?)

结果

在这里插入图片描述
最后试了一下,还是比较稳定的能够把70%的原先train的数据取出来。

另torch的三种mask操作

torch中对mask有三种操作。

mask_fill是把mask为true位置的地方赋一个值:

import torch
mask = torch.tensor([[1, 0, 0], [0, 1, 0],  [0, 0, 1]]).bool()
# tensor([[ True, False, False],
#         [False,  True, False],
#         [False, False,  True]])
a = torch.randn(3,3)
a.masked_fill(mask, 0)
# tensor([[ 0.0000,  0.6781,  0.6532],
#         [-1.2078,  0.0000,  0.4964],
#         [ 0.2192, -0.6276,  0.0000]])
a.masked_fill(~mask, 0)#可以对mask取反
# tensor([[-0.4438,  0.0000,  0.0000],
#         [ 0.0000,  1.3907,  0.0000],
#         [ 0.0000,  0.0000,  2.2462]])

mask_selected是产生mask并且按照true false位置选取,这个其实就是最基本的用法a[mask]或者a[~mask],只不过显式写出来就是了。

import torch
x = torch.randn(3,4)
# tensor([[ 0.2914, -0.1056,  0.4946,  0.2926],
#         [-1.0920, -0.2156,  3.0989, -0.9067],
#         [-0.1522,  1.9527,  0.1660,  0.8310]])
mask = x > 0.5
# tensor([[ 0.2914, -0.1056,  0.4946,  0.2926],
#         [-1.0920, -0.2156,  3.0989, -0.9067],
#         [-0.1522,  1.9527,  0.1660,  0.8310]])
torch.masked_select(x, mask)
# tensor([3.0989, 1.9527, 0.8310])

mask_scatter是把mask位置的元素从b取出来并且在相同位置赋值给a

import torch
mask = torch.BoolTensor([[1, 0, 0], [0, 1, 0],  [0, 0, 1]])
# tensor([[ True, False, False],
#         [False,  True, False],
#         [False, False,  True]])
a = torch.randn(2,3,3)
b = torch.ones_like(a)
a.masked_scatter(mask, b)
# tensor([[[ 1.0000, -0.1560, -0.7760],
#          [-0.5192,  1.0000, -0.1709],
#          [ 0.2091,  0.5650,  1.0000]],

#         [[ 1.0000,  0.0623, -0.1447],
#          [-1.2910,  1.0000, -1.2722],
#          [-0.7864, -0.1118,  1.0000]]])

参考:https://blog.csdn.net/weixin_41102519/article/details/121337359以及torch文档

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

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

相关文章

xss-labs/level4

首先还是输入我们最熟悉的payload <script>alert(xss)</script> 查看界面回显 发现表单中的尖括号都消失了 说明后台服务器将尖括号删除了 再去查看源代码 通过源代码我们可以知道存在两个有意义的输出点 第一个输出点被转义了 没办法利用了script标签去执行js代…

亲戚小孩月薪17k,而我只有4k+,好慌......

我们总是在悲观与乐观中反复折磨自己&#xff0c;感觉自己一事无成。总是眼高手低&#xff0c;总以为大运会砸到自己&#xff0c;遇到挫折就会感到很沮丧。 大学四年没考到英语六级证书&#xff0c;小学教资考了两次。现在想要考研&#xff0c;但总是觉得来不及&#xff0c;或…

SpringBoot概念、创建和运行

文章目录什么是Spring Boot &#xff1f;为什么要学Spring Boot &#xff1f;Spring Boot 优点Spring Boot 项目创建项目目录介绍和运行约定大于配置什么是Spring Boot &#xff1f;为什么要学Spring Boot &#xff1f; Spring 的诞生是为了简化 Java 程序的开发的&#xff0c…

外汇天眼:外汇市场为何在周末休市?为什么周末行情有波动?

虽然从理论上而言&#xff0c;货币市场从不休市&#xff0c;但您很难见到有人在周日交易。新手甚至会认为&#xff0c;交易活动的停止是因为外汇经纪商周末休息。但如下文所述&#xff0c;实际情况并非如此。 外汇市场中的主要参与者 货币交易主要是为了促进贸易和旅游业。而且…

助推专精特新企业数字化的低代码

近两年&#xff0c;“专精特新”成为行业的热门词。根据工信部的定义&#xff0c;“专精特新”中小企业&#xff0c;是指具有专业化、精细化、特色化、新颖化等特点的企业。它们多专注于产业链上某个环节&#xff0c;主营业务聚焦&#xff0c;同时具有较强大的创新能力、创新活…

PG::Potato

nmap -Pn -p- -T4 --min-rate1000 192.168.171.101 nmap -Pn -p 22,80,2112 -sCV 192.168.171.101 打开80端口未发现可利用的服务 尝试对路径爆破&#xff0c;同时FTP可匿名访问&#xff0c;查看FTP内是否有可用信息 dirb http://192.168.171.101 在FTP中得到了网站源码的…

跑通Intellij Platform Plugin项目

目录需求描述尝试方向1. 用2022.1版本运行2. 用2019.2版本运行结论需求描述 在研究DDD逆向建模支持工具的过程中&#xff0c;需要复现期刊作者的cargo项目&#xff0c;实现C2MD&#xff0c;即代码转UML的功能。虽然按照文章的要求安装DddTool插件&#xff0c;但是不能成功使用…

第三次上机作业 大连理工大学

8.7 某种电子元件的寿命x(单位:小时)服从正态分布。现测得16只元件的寿命如下 是否有理由认为元件的平均寿命显著地大于225小时(a=0.05)? data = read.csv("习题8.7.csv") t.test(data$寿命,mu = 225,alternative = "greater")p值小于0.05,不能认为认…

Python CNN卷积神经网络实例讲解,CNN实战,CNN代码实例,超实用

一、CNN简介 1. 神经网络基础 输入层&#xff08;Input layer&#xff09;&#xff0c;众多神经元&#xff08;Neuron&#xff09;接受大量非线形输入讯息。输入的讯息称为输入向量。 输出层&#xff08;Output layer&#xff09;&#xff0c;讯息在神经元链接中传输、分析、权…

3.Linux传统性能检测工具——vmstat

命令&#xff1a;vmstat <duration> 参数duration&#xff1a;统计间隔如果不加参数则输出自启动以来的统计结果&#xff08;注意&#xff1a;输出的第一行总是为该结果&#xff08;除memory counter相关数据以外&#xff09;&#xff09; 输出示例&#xff1a; 虽然vmst…

nVisual部署之nginx配置说明

Nginx 是一个高性能的HTTP和反向代理web服务器&#xff0c;因此nvisual在部署前端包时便采用了它作为服务器&#xff0c;版本使用1.14.1以上。在默认的配置下&#xff0c;还需要向nginx各模块添加配置才能达到生产需要。 接下来&#xff0c;从http模块开始&#xff0c;再到ser…

英文Paper写作需要了解哪些信息?

写Paper最重要的一点就是要仔细理解&#xff0c;Paper的题目告诉了哪些信息。 The most important thing about writing paper is to carefully understand what information the paper title tells you. 你应当精度每一个单词&#xff0c;从中找到尽可能多的指导。然后需要考虑…

历届图灵奖得主盘点

图灵奖&#xff0c;全称A.M.图灵奖&#xff08;ACM A.M Turing Award&#xff09;&#xff0c;是由美国计算机协会于1966年设立的计算机奖项&#xff0c;名称取自艾伦麦席森图灵&#xff0c;旨在奖励对计算机事业作出重要贡献的个人 。图灵奖对获奖条件要求极高&#xff0c;评奖…

STC 51单片机43——看门狗

看门狗测试&#xff0c;通过修改delay函数的延时长度&#xff0c;可以看到看门狗是否复位系统。 #include <reg52.h> sfr WDT_CONTR 0xE1; //声明WDT_CONTR void delay(void){ unsigned char i,j,k; for(i0;i<255;i) for(j0;j<2…

测试大老都是怎么理解cookiesession的?

为什么要学习cookie和session呢&#xff1f;若是没有掌握cookie和session的会话机制&#xff0c;就不了解客户端与服务器之间的交互通信原理&#xff0c;也就定位不了产生bug的原因。 cookie与session他们是如何理解的呢&#xff1f; 1、cookie与session区别&#xff1f; co…

笔试强训48天——day21

文章目录一. 单选1. 设一个有序的单链表中有n个结点&#xff0c;现要求插入一个新结点后使得单链表仍然保持有序&#xff0c;则该操作的时间复杂度&#xff08;&#xff09;2. 在一个单链表中&#xff0c;若删除 P 所指结点的后续结点&#xff0c;则执行?3. 设一个链表最常用的…

Thread的使用、线程的几个重要操作和状态【JavaEE初阶】

一、Thread类的常见构造方法 Thread()&#xff1a; 默认无参构造方法&#xff0c;如 &#xff1a;Thread t1 new Thread()&#xff1b; Thread(Runnable target)&#xff1a; 使用 Runnable 创建一个任务&#xff0c;再把 任务 放到线程里面&#xff0c; 如 Thread t2 new Th…

Kamiya丨Kamiya艾美捷小鼠血红蛋白ELISA说明书

Kamiya艾美捷小鼠血红蛋白ELISA预期用途&#xff1a; 小鼠血红蛋白ELISA是一种高灵敏度的双位点酶联免疫分析&#xff08;ELISA&#xff09;小鼠生物样品中血红蛋白的测定。仅供研究使用。 引言 血红蛋白&#xff08;HM&#xff09;是红细胞中的含铁氧转运蛋白。它吸收肺部的…

[附源码]计算机毕业设计springboot行程规划app

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Vue.js 加入高德地图的实现方法

一、功能需求 1.根据输入内容进行模糊查询&#xff0c;选择地址后在地图上插上标记&#xff0c;并更新经纬度坐标显示 2.在地图点击后&#xff0c;根据回传的左边更新地址信息和坐标显示 二、准备 1.申请高德地图账号&#xff0c;创建应用 2.在应用管理中 获得key 和安全密…