JS初识2

JavaScript_2

https://www.w3school.com.cn/js/index.asp

1.JavaScript 运算符

1.1JavaScript 使用(=)赋值运算符。

JavaScript 使用算数运算符(+  -  *  /  %  ++  --)来计算值。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>变量-运算符-表达式</title>
		<script>
			function  suanshu(){
				//声明变量
				var num1=10;
				var num2=3;
				document.getElementById("h1").innerHTML=num1+"+"+num2+"="+(num1+num2);
				document.getElementById("h2").innerHTML=num1+"-"+num2+"="+(num1-num2);
				document.getElementById("h3").innerHTML=num1+"*"+num2+"="+(num1*num2);
				document.getElementById("h4").innerHTML=num1+"/"+num2+"="+(num1/num2);
				document.getElementById("h5").innerHTML=num1+"%"+num2+"="+(num1%num2);
				// ++ [自动加1]
				// 变量++  [先用后加]
				//num1++;  //10
				//document.getElementById("h6").innerHTML=num1; //11
				// ++变量  [先加后用]
				//++num1;  //11
				//document.getElementById("h6").innerHTML=num1; //11
				// -- [自动减1]
				// 变量-- [先用后减]
				//num1-- ; //10
				//document.getElementById("h6").innerHTML=num1; //9
				//  -- 变量
				--num1;  // 9
				document.getElementById("h6").innerHTML=num1; //9
			}
		</script>
	</head>
	<body>
		<input  type="button"  value="测试算数运算符" onclick="suanshu()"/><br>
		<h1 id="h1"></h1>
		<h1 id="h2"></h1>
		<h1 id="h3"></h1>
		<h1 id="h4"></h1>
		<h1 id="h5"></h1>
		<h1 id="h6"></h1>
	</body>
</html>

1.2.JavaScript 使用(>  <  ==  >=  <=  != )比较运算符运算符。

比较运算符的结果一定是布尔值【true/false】

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>javascript中的比较运算符</title>
		<script>
			//测试比较运算符的函数
			function test1(){
				//定义参与运算的变量
				var num1=10;
				var num2=3;
				document.getElementById("h1").innerHTML=num1+">"+num2+" = "+(num1>num2);//true
				document.getElementById("h2").innerHTML=num1+"<"+num2+" = "+(num1<num2);//false
				document.getElementById("h3").innerHTML=num1+">="+num2+" = "+(num1>=num2);//true
				document.getElementById("h4").innerHTML=num1+"<="+num2+" = "+(num1<=num2);//false
				document.getElementById("h5").innerHTML=num1+"=="+num2+" = "+(num1==num2);//false
				document.getElementById("h6").innerHTML=num1+"!="+num2+" = "+(num1!=num2);//true
			}
		</script>
	</head>
	<body>
		<input type="button" value="测试比较运算符" onclick="test1();" />
		<h2 id="h1"></h2>
		<h2 id="h2"></h2>
		<h2 id="h3"></h2>
		<h2 id="h4"></h2>
		<h2 id="h5"></h2>
		<h2 id="h6"></h2>
	</body>
</html>

2.2JavaScript 使用(||   &&  ! )逻辑运算符运算符。

|| [逻辑或]   true  ||  false  -->  true

false  ||  true   -->  true

true  ||  true   -->  true

false  ||  false  -->  false

只要有true结果就是true

&& [逻辑与]  true  &&  false  -->  false 

false   &&  true  -->  false 

false  &&  false  -->  false

true  &&  true   -->  true

只要有false结果就是false

! [取反]   !true--->false

         !false----true

逻辑运算符的运算值和运算结果一定是布尔值【true/false】

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>测试逻辑运算符</title>
		<script>
			测试逻辑运算符
			function test1(){
				//定义参与运算的变量
				var num1=10;
				var num2=3;
				document.getElementById("h1").innerHTML="("+num1+">"+num2+") || ("+num1+"<"+num2+")=="+((num1>num2)||(num1<num2));
				//(10>3) || (10<3)== true
				document.getElementById("h2").innerHTML="("+num1+">"+num2+") && ("+num1+"<"+num2+")=="+((num1>num2)&&(num1<num2));
				//(10>3) && (10<3)== false  
				document.getElementById("h3").innerHTML="!(("+num1+">"+num2+") && ("+num1+"<"+num2+"))=="+!((num1>num2)&&(num1<num2));
				//!((10>3) && (10<3))== true  
			}
		</script>
	</head>
	<body>
		<input type="button" value="测试逻辑运算符" onclick="test1();" />
		<h2 id="h1"></h2>
		<h2 id="h2"></h2>
		<h2 id="h3"></h2>
	</body>
</html>

比较与逻辑运算符通常都是用来做判断的。

2.JavaScript 数据类型

字符串值,数值,布尔值,数组,对象。

字符串值--“hello”

var zf=”hello”;

数值[整数和小数]---123  , 12.5

var sz=123; var sz=12.5;

布尔值--[true/false]

var be=true; var be=false;

数组--可以保存一组值

var array=[“hello”,123,12.5,true,false];

对象

var  student={stuid:1001,stuname:”zhangsan”,stuage:23,stuaddress:”西安”};

 student.stuid===>1001

3.JavaScript 函数

JavaScript 函数是被设计为执行特定任务的代码块【{}】。

实例:

function myFunction(p1, p2) {

    return p1 * p2;              // 该函数返回 p1 和 p2 的乘积

}

JavaScript 函数通过 function 关键词进行定义.

myFunction--函数名称

“()”---参数列表【可以没有参数,也可以有多个】

    参数接收函数之外的数据值进入本函数进行运算【找帮手】

p1, p2---参数【变量名称,不需要定义】接收函数之外的数据值进入本函数

{}---代码块

return --- 返回函数的执行结果

  1. 函数没有执行结果,不需要出现return xxxx
  2. 函数有执行结果,需要在最后出现return xxxxx
  3. 有没有名称
  4. 有名称的函数

    function test1(){

                      alert("有名称的函数");

    }

    没有名称的函数【匿名函数】

    window.οnlοad=function(){

                                       alert("匿名函数");}

  5. 有没有参数
  6. 有参数的函数
  7.          function test2(info){

                                       alert(info);

                              }

        在使用的时候需要传递进入参数值

  8. 没有参数的函数
  9. function test1(){

                                       alert(“没有参数的函数”);

                              }

  10. 有没有结果
  11. 有结果的函数
  12.          function test3(){

                                       return "有结果";

                              }

  13. 没有结果的函数

function test3(){

                         

}

例如:

<input type="button" value="测试的函数" οnclick="test5();" /><br>

 

         function test4(num1,num2){

                                   var res=num1*num2;

                                   return res;

                          }

         function test5(){

                                   var res=test4(100,123);

                                   alert("res=="+res);}

4.JavaScript 对象

对象也是变量。但是对象包含很多值。

对象包含很多值1.属性  2.方法

对象就是用来描述具有相同属性和方法的变量。

属性----变量 【var】【属性名称:属性值】

方法----函数 【function】 【方法名称:function(){}】

格式:

var 对象名称={属性:属性值,....,

方法名称:函数};

例如:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>创建并使用对象</title>
		<script>
			//创建一个汽车对象
			var car={
				carName:"bmw",
				carcolor:"红色",
				start:function(){
					alert("启动--"+car.carcolor+","+car.carName+"汽车");
				},
				stop:function(){
					alert(this.carcolor+","+this.carName+"汽车停止了");
				}
			};
		function startcar(){
			car.carName="奔驰";
			car.start();
		}
		function stopcar(){
			car.carcolor="蓝色";
			car.stop();
		}
		</script>
	</head>
	<body>
		<input type="button" value="启动" onclick="startcar();"/><br>
		<input type="button" value="停车" onclick="stopcar();"/><br>
	</body>
</html>

var  str=”hello”; 字符串
var  num1=123;  数字
var  num2=”123”;  字符串
var  boo=true; 布尔
function  test1(){  }--函数
用javascript表示一个学生
var student={
name:”zhangsan”,
age:23,
addres:”西安”,
sex:true,
xuexi:function(){
alert(“我是学生,我在学习!!!”);
}}
student.name=”lisi”; //修改对象的属性值
student.name;  //获取对象的属性值。
student[“name”]
student.xuexi(); //访问学生的学习方法
通过对象的名称就可以访问对象中保存的变量和方法。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			//创建一个学生对象
			var student={
				stuid:1001,
				stuname:"zhangsan",
				stuage:23,
				stuaddress:"西安",
				getInfo:function(){
					return student.stuid+"-"+student.stuname;
				},
				getInfo2:function(id,name){
					student.stuid=id;
					student.stuname=name;
					return student.stuid+"-"+student.stuname;
				}
			};
			
			var person={
				personname:"wangwu",
				mystudent:{
					stuid:1001,
					stuname:"zhangsan",
					getInfo:function(){
						return person.mystudent.stuid+"-"+person.mystudent.stuname;
					}
				}
			}
			
			function  test1(){
				var info1=student.getInfo();
				alert(info1);
			}
			
			function  test2(){
				var info2=student.getInfo2(1002,"lisi");
				alert(info2);
			}
			
			function  test3(){
				var name=person.personname;
				//person.mystudent.stuid=1002;
				//person.mystudent.stuname="lisi";
				var info=person.mystudent.getInfo();
				alert(name+"----"+info);
			}
		</script>
	</head>
	<body>
		<input type="button" value="测试学生对象的getInfo方法" onclick="test1();"/>
		<input type="button" value="测试学生对象的getInfo2方法" onclick="test2();"/>
		<input type="button" value="测试Person对象" onclick="test3();"/>
	</body>
</html>

 

### RT-DETRv3 网络结构分析 RT-DETRv3 是一种基于 Transformer 的实时端到端目标检测算法,其核心在于通过引入分层密集正监督方法以及一系列创新性的训练策略,解决了传统 DETR 模型收敛慢和解码器训练不足的问题。以下是 RT-DETRv3 的主要网络结构特点: #### 1. **基于 CNN 的辅助分支** 为了增强编码器的特征表示能力,RT-DETRv3 引入了一个基于卷积神经网络 (CNN) 的辅助分支[^3]。这一分支提供了密集的监督信号,能够与原始解码器协同工作,从而提升整体性能。 ```python class AuxiliaryBranch(nn.Module): def __init__(self, in_channels, out_channels): super(AuxiliaryBranch, self).__init__() self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.bn = nn.BatchNorm2d(out_channels) def forward(self, x): return F.relu(self.bn(self.conv(x))) ``` 此部分的设计灵感来源于传统的 CNN 架构,例如 YOLO 系列中的 CSPNet 和 PAN 结构[^2],这些技术被用来优化特征提取效率并减少计算开销。 --- #### 2. **自注意力扰动学习策略** 为解决解码器训练不足的问题,RT-DETRv3 提出了一种名为 *self-att 扰动* 的新学习策略。这种策略通过对多个查询组中阳性样本的标签分配进行多样化处理,有效增加了阳例的数量,进而提高了模型的学习能力和泛化性能。 具体实现方式是在训练过程中动态调整注意力权重分布,确保更多的高质量查询可以与真实标注 (Ground Truth) 进行匹配。 --- #### 3. **共享权重解编码器分支** 除了上述改进外,RT-DETRv3 还引入了一个共享权重的解编码器分支,专门用于提供密集的正向监督信号。这一设计不仅简化了模型架构,还显著降低了参数量和推理时间,使其更适合实时应用需求。 ```python class SharedDecoderEncoder(nn.Module): def __init__(self, d_model, nhead, num_layers): super(SharedDecoderEncoder, self).__init__() decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=nhead) self.decoder = nn.TransformerDecoder(decoder_layer, num_layers=num_layers) def forward(self, tgt, memory): return self.decoder(tgt=tgt, memory=memory) ``` 通过这种方式,RT-DETRv3 实现了高效的目标检测流程,在保持高精度的同时大幅缩短了推理延迟。 --- #### 4. **与其他模型的关系** 值得一提的是,RT-DETRv3 并未完全抛弃经典的 CNN 技术,而是将其与 Transformer 结合起来形成混合架构[^4]。例如,它采用了 YOLO 系列中的 RepNCSP 模块替代冗余的多尺度自注意力层,从而减少了不必要的计算负担。 此外,RT-DETRv3 还借鉴了 DETR 的一对一匹配策略,并在此基础上进行了优化,进一步提升了小目标检测的能力。 --- ### 总结 综上所述,RT-DETRv3 的网络结构主要包括以下几个关键组件:基于 CNN 的辅助分支、自注意力扰动学习策略、共享权重解编码器分支以及混合编码器设计。这些技术创新共同推动了实时目标检测领域的发展,使其在复杂场景下的表现更加出色。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值