1、Math 对象的属性
// 自然对数的底数,常量e的值
document.write(Math.E); // 2.718281828459045
// 10的自然对数
document.write(Math.LN10); // 2.302585092994046
// 2的自然对数
document.write(Math.LN2); // 0.6931471805599453
// 以10为底e的对数
document.write(Math.LOG10E); // 0.4342944819032518
// 以2为底e的对数
document.write(Math.LOG2E); // 1.4426950408889634
// π的值
document.write(Math.PI); // 3.141592653589793
// 1/2的平方根
document.write(Math.SQRT1_2); //0.7071067811865476
// 2的平方根
document.write(Math.SQRT2); //1.4142135623730951
2、min()和 max()方法用于确定一组数值中的最小值和最大值。这两个方法都可以接收任意多个数值参数。
var max = Math.max(16, 56, 38, 10);
document.write(max); // 56
var min = Math.min(16, 56, 38, 10);
document.write(min); // 10
要找到数组中的最大或最小值,可以像下面这样使用 apply()方法。
var values = [1, 3, 5, 7, 9, 11];
// 把Math对象作为apply()的第一个参数,从而正确地设置this值
var max = Math.max.apply(Math, values);
document.write(max); // 11
3、舍入方法
Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;
Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数;
Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数。
// ceil向上取整
document.write(Math.ceil(3.2)); // 4
document.write(Math.ceil(3.9)); // 4
document.write(Math.ceil(3.5)); // 4
// floor向下取整
document.write(Math.floor(3.2)); // 3
document.write(Math.floor(3.5)); // 3
document.write(Math.floor(3.9)); // 3
// round四舍五入
document.write(Math.round(3.2)); // 3
document.write(Math.round(3.5)); // 4
document.write(Math.round(3.9)); // 4
4、random()方法
Math.random()方法返回大于等于 0 小于 1 的一个随机数。
利用 Math.random() 从某个整数范围内随机选择一个值。 公式:值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
// 2-10之间的值
var num = Math.floor(Math.random() * 9 + 2);
document.write(num); // 7
一js是一种解释型,事件驱动型,面向对象型的脚本语言,通过浏览器加载的JavaScript解释器(Js引擎)执行
解释型:边解释边执行,不会编译产生中间文件,注意:js无编译过程
脚本语言:js依赖于html文件存在,不会独立运行
Js不能干什么:
1.不能访问用户的本地文件
2.不能操作来自不同服务的网页文档(html文件)
三个书写位置:
1.内联:在html标签中,通过事件
2.在body标签中,通过script标签书写
3.在head标签中,通过script标签引入js文件
注意:js代码从上至下运行
变量
Js为弱语言类型,其变量的声明都使用var,但变量中存储的数据是有类型的;
Js数据类型有:
number:数字(包含整数,小数);
string:字符串(包含字符,字符串);
boolean:布尔
object:对象
undefined:未定义
例:var str = "Hello World";
var num = 10;
var num = 10.2;
var flag = true;
算数运算符
+ - * / % ++ --
注:除/外,与Java相同
因Js数据不区分数据类型,故/结果为小数,例: 5/2 = 2.5;在Java中 5/2 = 2;
赋值运算符:
= += -= *= /= %= 同上
关系运算符
==:判断两个变量字面量是否相同,例:13 == "13" 的值为true
===:判断两个变量字面量,数据类型是否同时满足相同.例:13 === "13" 的结果为false
> < >= <= != 同Java
逻辑运算符
&
&&:逻辑与:同真为真,一假为假;当为真时,返回最后一个为真的值;当为假时,返回第一个为假的值
|
|| :逻辑或:一真为真,同假为假;当为真时,返回第一个为真的值,当为假时,返回最后一个为假的值
!
函数(方法,api)
两种格式:
1.var 方法名 = function(形参列表){
方法体;
}
2.function 方法名(形参列表){
方法体;
}
判断语句:
switch(){
}
if(){
}else if(){
}else{}
循环语句:
while(){}
do{}while()
普通for循环:for(){}
增强for循环:for(集合的索引 in 要循环的集合){}
流程控制语句:
break:结束本次循环
continue:跳出当前循环,继续下次循环
对象
Js中对象的两种创建方式:
1.普通方式
var 对象名 = function(形参列表){
属性名1 : 属性,
属性名2 : 属性,
...
方法名1 : function(形参列表){}
}
2.构造器
function 方法名[类名] (形参列表){
this.属性名1 = 属性名1;
this.属性名2 = 属性名2;
...
this.方法名1 = function(形参列表){方法体};
或
this.方法名2 = 方法名(形参列表);
*注:当方法中代码过长时,可以将方法在构造器外部封装,在构造器中引用封装的方法;
}
var 对象名 = new 方法名(形参列表);
扩展属性
当对象中没有该属性时,在外部扩展
1.对象名.属性名 = 属性值;
注:此时扩展的属性只能在该对象中使用
2.构造器.prototype.属性名 = 属性值;
注:此时扩展的属性在该构造器构建的对象中都可以使用
内置对象
含义:即Js提前封装好的一个构造器
String:字符串对象
Array:数组对象
Date:日期对象
Math:数学对象
Number:数字计算对象
Boolean:布尔对象
Regexp:正则表达式对象
erroy:异常处理的对象
Object:通用对象
Function:顶层对象,function的属性为全局属性,function的函数为全局函数
Events:事件对象
Date:
var date = new Date();创建Date对象
date.getxxxx:获取时间,年,月,日,时,分,秒
date.setxxxx:设置时间,年,月,日,时,分,秒
String:
创建对象:
var str = new String();
或
var str = new String("xxx");
或
var str = "xxxx";
函数:
match():匹配,同正则表达式使用,若匹配成功,返回匹配成功的字符串;反之,返回null
其余同Java
Array:
创建对象:
var arr = new Array();
或
var arr = new Array(1,2,"mm",'n',true,object);
或
var arr = [1,2,"mm",'n',true,object];
函数:同Java
Regexp:
正则表达式:
\d:0-9任意一个数字
\s:空白字符
\b:单词快捷
\uxxxx:匹配unicode字符
[0-9]:0-9任意一个数字
[13579]:1,3,5,7,9中任意一个数字
[1,3,5,7,9]:1,3,5,7,9中任意一个数字
[a-z]:a到z任意一个字符
[0-9a-zA-Z]:任意一个数字或字符
{m}:出现m次
{m,n}:出现m到n次
{m,}:至少出现m次
|:或
():括号中的为一个整体
a+:至少一个a
a*:0到n个a
a?:0到1个a
创建对象:
var reg = new Regexp("正则表达式");
函数:
test():测试,判断传入的字符串是否满足正则表达式,满足返回true,反之flase
Function:
函数:
encodeURI():对网址参数部分进行编码(特殊符号和中文)
decodeURI():多编码的网址参数进行解码
escape():对字符串的特殊符号和中文进行编码
unescape():对编码的字符串进行解码
BOM:
浏览器窗口(顶层)window,下分5部分
Screen:屏幕
History:历史
Document:网页
location:地址
navigator:浏览器
DOM:即document
javascript number对象
javascript只有一个数字类型,
可以使用叶可以不使用小数点来书写数字.
javascript 数字,
javascript数字可以使用也可以不使用小数点来书写:
var pi=3.14;//使用小数点
var x=34; //不使用小数点
极大或极小的数字可通过科学(指数)计数法来写:
var y=123e5;//12300000
var z=123e-5;//0.00123
所以javascript数字均为64位
,javascript不是类型语言,与许多其他编程语言不同,javascript不定义不同类型的
数字,比如整数,短、长、浮点等等,
javascript中的所有数字都存储为根位10的64(8比特),浮点数.
精度,整数(不使用小数点或指数计数法)最多为15位,
小数的最大位数是17,但是浮点运算并不总是100%准确;
var x=0.2+0.1;
八进制和十六进制,
如果前缀为0,则javascript会把数值常量解释为八进制数,如果前缀为0和"X",则解释为十六进制数,
var y=0377;
var z=0xFF;
绝不要在数字前面写零,除非您需要进行八进制转换.
数字属性和方法,属性:
MAX VALUE ,MIN VALUE , NEGATIVE INFINITIVE,POSITIVE INFINITIVE,NaN
prototype,constructor
方法:toExponential(),toFixed(),toPrecision(),toString(),valueOf()
JavaScript的数学对象——Math对象
Math 对象
JavaScript给我们提供了一些操作数字的方法,也是一种数据类型是复杂数据类型。
Math对象的通用语法: http://Math.xxx()
random()
Math.random() 这个方法是用来生成一个 0 ~ 1 之间的随机数
每次执行生成的数字都不一样,但是一定是 0 ~ 1 之间的。生成的数字包含 0 ,但是不包含 1。
var num = Math.random()
console.log(num) // 得到一个随机数
round()
Math.round() 是将一个小数 四舍五入 变成一个整数。
var num = 10.1
console.log(Math.round(num)) // 10
var num2 = 10.6
console.log(Math.round(num2)) // 11
abs()
Math.abs() 是返回一个数字的 绝对值
var num = -10
console.log(math.abs(num)) // 10
ceil()
Math.ceil() 是将一个小数 向上取整 得到的整数
var num = 10.1
console.log(Math.ceil(num)) // 11
var num2 = 10.9
console.log(Math.ceil(num2)) // 11
floor()
Math.floor() 是将一个小数 向下取整 的到的整数
var num = 10.1
console.log(Math.floor(num)) // 10
var num2 = 10.9
console.log(Math.floor(num2)) // 10
max()
Math.max() 得到的是你传入的几个数字之中 最大 的那个数字
console.log(Math.max(1, 2, 3, 4, 5)) // 5
min()
Math.min() 得到的是你传入的几个数字之中 最小 的那个数字
console.log(Math.min(1, 2, 3, 4, 5)) // 1
sqrt()
Math.sqrt()得到你传入数字的算术平方根
var res = Math.sqrt(4)
console.log(res)
pow()
Math.pow(底数,指数)等到一个你传入指定底数和指数的值
var res = Math.pow(2, 10)
console.log(res)
PI
Math.PI 得到的是 π 的值,也就是 3.1415926...
console.log(Math.PI) // 3.141592653589793
因为计算机的计算精度问题,只能得到小数点后 15 位。使用 Math.PI 的时候,是不需要加 () 的。
```python
class BertPooler(nn.Module):
def __init__(self, config):
super().__init__()
self.dense = nn.Linear(config.hidden_size, config.hidden_size)
self.activation = nn.Tanh()
def forward(self, hidden_states):
# We "pool" the model by simply taking the hidden state corresponding
# to the first token.
first_token_tensor = hidden_states[:, 0]
pooled_output = self.dense(first_token_tensor)
pooled_output = self.activation(pooled_output)
return pooled_output
from transformers.models.bert.configuration_bert import *
import torch
config = BertConfig.from_pretrained("bert-base-uncased")
bert_pooler = BertPooler(config=config)
print("input to bert pooler size: {}".format(config.hidden_size))
batch_size = 1
seq_len = 2
hidden_size = 768
x = torch.rand(batch_size, seq_len, hidden_size)
y = bert_pooler(x)
print(y.size())
```