原型和原型链-转自网络资源

元学习——原型网络(Prototypical Networks) 元学习——原型网络(Prototypical Networks) 1. 基本介绍 1.1 本节引入 在之前的的文章中,我们介绍了关于连体网络的相关概念,并且给出了使用Pytorch实现的基于连体网络的人脸识别网络的小样本的学习过程。在接下来的内容中,我们来继续介绍另外一种小样本学习的神经网络结构——原型网络。这种网络的特点是拥有能够不仅仅应用在当前数据集的泛化分类能力。在接下来的内容中,我们将介绍以下几个内容: 原型网络的基本结构。 原型网络算法描述。 将原型网络应用于分类任务。 高斯原型网络结构以及算法 阅读详情
三者关系.jpeg

JS原型
前言
此文章为加深对JS中重要概念进行理解,不建议没有任何JS基础的人看,只为加深对概念理解通过实际的例子,而不是看书以为自己读懂了,可能几天后就忘了,主要是为了理解核心概念,以及对重难点解释。
一切都是对象
“一切都是对象”这句话的重点在于如何去理解“对象”这个概念。
概念
JavaScript 中,万物皆对象!但对象也是有区别的。分为普通对象和函数对象,Object 、Function 是 JS 自带的函数对象。
当然,也不是所有的都是对象,值类型就不是对象。

function show(x) { console.log(typeof x); // undefined
console.log(typeof 10); // number 
console.log(typeof 'abc'); // string 
console.log(typeof true); // boolean
console.log(typeof function () {}); //function
console.log(typeof [1, 'a', true]); //object
console.log(typeof { a: 10, b: 20 }); //object 
console.log(typeof null); //object 
console.log(typeof new Number(10)); //object
 } 
 show();

以上代码列出了typeof输出的集中类型标识,其中上面的四种(undefined, number, string, boolean)属于简单的值类型,不是对象。剩下的几种情况——函数、数组、对象、null、new Number(10)都是对象。他们都是引用类型。
对象——若干属性的集合
概念
数组是对象,函数是对象,对象还是对象。
对象里面的一切都是属性,只有属性,没有方法
那么这样方法如何表示呢?——方法也是一种属性。因为它的属性表示为键值对的形式。
而且,javascript中的对象可以任意的扩展属性,没有class的约束。这个大家应该都知道,就不再强调了。
先说个最常见的例子:

var obj = { a: 10, 
            b: function(x) { alert(this.a + x) },
            c: { name: "yzh", age: 21 } }

以上代码中,obj是一个自定义的对象,其中a、b、c就是它的属性,而且在c的属性值还是一个对象,它又有name、year两个属性。
这个可能比较好理解,那么函数和数组也可以这样定义属性吗?——当然不行,但是它可以用另一种形式,总之函数/数组之流,只要是对象,它就是属性的集合。

var fn = function () { alert(100); };
 fn.a = 10;
 fn.b = function (){ alert(123); };
 fn.c = { name: "yzh", age: 21 };

上段代码中,函数就作为对象被赋值了a、b、c三个属性——很明显,这就是属性的集合。
(引用类型)都是对象,对象是属性的集合。最需要了解的就是对象的概念。
创建对象
前言
这块在《JS高级程序设计》也算是大章节下的一块大内容,我只把一些重要的概念写出来让大家理解,具体的深入要自己去看书中的讲解。
函数和对象的关系
对象都是通过函数创建的

function Fn() { this.name = 'yzh'; this.year = 1996; } 
var fn1 = new Fn();
有人可能会举出如下反例
var obj = { a: 10, b: 20 };
var arr = [5, 'x', true];

这种做法属于使用“快捷方式”,在编程语言中,一般叫做“语法糖”。
其实以上代码的本质是:

//var obj = { a: 10, b: 20 };
//var arr = [5, 'x', true];
 var obj = new Object(); 
obj.a = 10; obj.b = 20;
var arr = new Array(); 
arr[0] = 5;
arr[1] = 'x'; 
arr[2] = true;

而其中的 Object 和 Array 都是函数:

console.log(typeof (Object));// function
console.log(typeof (Array)); // function

总结:对象都是通过函数来创建的

prototype

函数也是一种对象。他也是属性的集合,你也可以对函数进行自定义属性
每创建一个函数,就会同时创建函数的prototype对象。
这个prototype的属性值是一个对象(属性的集合,再次强调!),默认的只有一个叫做constructor的属性,指向这个函数本身。

function Fn() { } 
Fn.prototype.name = '王福朋';
Fn.prototype.getYear = function () { return 1988; };
var fn = new Fn();
console.log(fn.name); 
console.log(fn.getYear());

Fn是一个函数,fn对象是从Fn函数new出来的,这样fn对象就可以调用Fn.prototype中的属性。
因为每个对象都有一个隐藏的属性——“proto”,这个属性引用了创建这个对象的函数的prototype。
即:fn.proto === Fn.prototype
这里的”proto”成为“隐式原型”
隐式原型
每个函数function都有一个prototype,即原型。这里再加一句话——每个对象都有一个proto,可成为隐式原型。proto用于指向创建它的构造函数的原型对象
对象 person1 有一个 proto属性,创建它的构造函数是 Person,构造函数的原型对象是 Person.prototype ,所以:

person1.proto == Person.prototype

又比如:obj这个对象本质上是被Object函数创建的,因此obj.proto=== Object.prototype
在说明“Object.prototype”之前,先说一下自定义函数的prototype。自定义函数的prototype本质上就是和 var obj = {} 是一样的,都是被Object创建,所以它的proto指向的就是Object.prototype。
但是Object.prototype确是一个特例——它的proto指向的是null.
至于为什么简单解释下:
所有的构造器都来自于 Function.prototype,甚至包括根构造器Object及Function自身。所有构造器都继承了·Function.prototype·的属性及方法。如length、call、apply、bind

console.log(typeof Function.prototype) // function
console.log(typeof Object.prototype) // object
console.log(typeof Number.prototype) // object
console.log(typeof Boolean.prototype) // object
console.log(typeof String.prototype) // object
console.log(typeof Array.prototype) // object
console.log(typeof RegExp.prototype) // object
console.log(typeof Error.prototype) // object
console.log(typeof Date.prototype) // object
console.log(typeof Object.prototype) // object

知道了所有构造器(含内置及自定义)的proto都是Function.prototype,
Function.prototype的proto是谁呢?

console.log(Function.prototype.proto === Object.prototype) // true

这说明所有的构造器也都是一个普通 JS 对象,可以给构造器添加/删除属性等。同时它也继承了Object.prototype上的所有方法:toString、valueOf、hasOwnProperty等。
最后Object.prototype的proto是谁?
Object.prototype.proto === null // true
已经到顶了,为null。
原型链
概念
访问一个对象的属性时,先在基本属性中查找,如果没有,再沿着proto这条链向上找
javascript中的继承是通过原型链来体现的.
传统原型语法

function Foo() {}
Foo.prototype.a = 100; 
Foo.prototype.b = 200;
 var f1 = new Foo();
 f1.a = 10; alert(f1.a); //10 
alert(f1.b); //200
function Foo() {} 
var f1 = new Foo(); 
f1.a = 10;
 Foo.prototype.a = 100; 
Foo.prototype.b = 200;
 alert(f1.a); //10
alert(f1.b); //200

对象字面量方法添加属性和方法的注意事项

 function Foo() {} 
 Foo.prototype = { a: 100, b: 200 } 
 var f1 = new Foo(); 
 f1.a = 10; alert(f1.a); //10 
 alert(f1.b); //200
 function Foo() {}
 var f1 = new Foo();
 f1.a = 10;
 Foo.prototype = { a: 100, b: 200 }
 alert(f1.a); //10
 alert(f1.b); //undefined

原型的属性和方法赋值要在,新建实例对象之前,不然无法获得原型的值和属性,alert返回相应的undefined
重写原型对象问题
接上面的例子讲,如果在实例上添加新属性,这个属性就会屏蔽原型对象中保存的同名属性,就是阻止访问了属性,而不是修改原型的属性。

function Foo() {} 
 var f1 = new Foo(); 
f1.a = 10;
 Foo.prototype = { a: 100, b: 200 } 
alert(f1.a); //10
alert(f1.b); //undefined

总结:重写原型对象切断了现有原型与任何之前已经存在的对象实例之间的关系,它们的引用的仍然是最初的原型。
End
暂时总结到此,有些知识点没有讲到,可能需要大家自己去看书或查阅资料来理解,本人理解也有限,文中若有难以理解的还望大神换个方式来阐述。
未完待续
后续还有两篇讲解《执行上下文与作用域》和《闭包》,最后一篇闭包可能会有一些前端面试题来讲,并在文章末做个总结。
原创首发http://www.jianshu.com/p/3c942c1212a1

原型网络 Prototypical Network 原型网络 - Prototypical Network 原型网络出自下面这篇论文。 Snell J, Swersky K, Zemel R S. Prototypical networks for few-shot learning[J]. NIPS 2017. 原理 原理和聚类有点相似 孪生网络的缺点就是要对比目标和过去每个样本之间的相似度,从而分析目标的类别,而原型网络就提出,把样本投影到一个空间,计算每个样本类别的中心,在分类的时候,通过对比目标到每个中心的距离,从而分析出目标的类别。 sup 阅读详情

相关推荐

元学习系列(二):Prototypical Networks(原型网络)

之前我们了解了孪生网络以及他是如何处理one-shot learning的例子,现在我们再来看看另一个模型,原型网络Prototypical Networks。 之前说过,孪生网络的缺点就是要对比目标和过去每个样本之间的相似度,从而分析目标的类别,而原型网络就提出,先把样本投影到一个空间,计算每个样本类别的中心,在分类的时候,通过对比目标到每个中心的距离,从而分析出目标的类别: 大致思路很简单...

jesseyule的博客 2万+

浅理解小样本学习:原型网络

简单的介绍了小样本学习的背景,然后介绍了一部分原型网络论文的内容。

codeshits的博客 6065

原形网络(Prototypical Networks)基于PyTorch的实现

原形网络(Prototypical Networks)基于PyTorch的实现 代码讲解原文:https://blog.youkuaiyun.com/weixin_41803874/article/details/92068250

原型与原型链详解(带图方便理解)

每一个类(构造函数)都有一个显示原型prototype(本质就是个对象)01 类:是创建对象实例的模板 本质上讲类是个函数 (例如Array object String )001 构造函数 :用new来执行的函数02 实例:就是由类创建的对象 本质上就是对象例如 [1,2,3] {name : "mumu " } , “abc”以上就是面试经常会问到的内容啦,希望对你们有用哈。

m0_55734030的博客 1万+

大白话系列:什么是微服务

用大白话和实际例子来通俗易懂地告诉你什么是微服务~

2401_87403086的博客 1242

以太网以及车载以太网概述

千兆网线和百兆网线区别 1、所谓的百兆网线其实就是 五类线 和超五类线 ,而千兆网线主要是指六类线 和超六类线 ,另外还有古老的十兆网线也就是指 四类线 和 三类线 等。 2、在使用上,其实千兆网线和百兆网线是没什么区别的,千兆网线完全兼容百兆网络。 3、百兆网线的线芯是8芯,但上传和下载只用到了其中的4根,而千兆网线需要完全用到8根。 4、另外在线芯的排布上,千兆网线的线芯中间有个十字形的塑料架,用来把四组8芯的线分开,这个百兆网线是没有的, 5、所有的网线在外皮上都有种类标识,CAT5 CAT

$好记性还是要多记录$ 4074

src与href的区别、link与@import的区别、css3/Html5的新特性、浏览器兼容问题、原型与原型链

animation 定义动画:@keyframes 动画名称。

2301_77783555的博客 772

微信中调起支付宝支付

微信中调用支付宝支付,首先我们知道微信是不能直接调用支付宝的,所以我们需要使用一个中间页提示用户在浏览器中打开,然后进行网页支付或打开app支付。以下为详细唤起支付宝的步骤、业务代码以及相关页面图。 如有问题欢迎评论留言,看到定回复哦^_^\(^o^)/~ 一、微信中唤起支付宝,有几个步骤: 1、中间页引导用户在浏览器中打开去唤起支付宝。 2、浏览器中打开支付宝或app中打开支付宝。 3...

han_calligrapher的博客 2万+

29天吐血整理前端学习路线,送给那些正在自学或准备自学前端的人!

应用缓存( cache manifest )……

2401_84412050的博客 1171

逆向攻防世界CTF系列40-ReverseMe-120

注意sub_401000main中只传了两个参数,但是跟进后发现四个(可能是隐式传递,放在寄存器里传递了),调试发现a4是输入长度,与最终的you_know_how_to_remove_junk_code比较的是v12(但是并没有被传入),开始怀疑是不是隐式传递了。_mm_xor_si128用于计算128位(16字节)的按位异或,然后通过v14控制循环结束的条件,可以看到v14增长的步长为16,而且通过上面得到的flag值解码得到的字符串为32个字节大小,正好是16的整数倍。

LH1013886337的博客 1410

PCIE Lane Margining Linux 环境配置

Copy all the provided files in folder PYC38 or PYC310 to the created pcie_lmt folder. Index of /ftp/python/3.8.10/Copy below commands to a file and rename it as "scan_pcie.py", the commands are from "685662 PCIe-LMT-Gen4_Gen5-r0p77.pdf" in the lane margi

mysongshine的博客 1436

前端面试题

原型 每个对象都有一个属性__proto__指向构造函数的原型对象,对象可以继承原型对象上的属性和方法,原型对象又有原型,可以继承原型对象上的属性和方法,这样一层一层,以此类推,这种关系称为原型链 每个函数都有一个属性prototype指向原型对象,创建一个函数的时候就创建了这个属性 new 构造函数创建的实例,内部的__proto__属性指向构造函数的原型对象,普通对象的__proto__属性指向Object.prototype,函数对象的__proto__指向Function.prototype,每个对

weixin_41881165的博客 215

【sealos安装指南】基于 Sealos 安装 Kubernetes 1.33.6 高可用集群

本文介绍使用Sealos工具快速搭建Kubernetes集群的详细指南。Sealos简化了K8s部署流程,自动完成系统调优,适合新手学习使用。文章提供了服务器规划、环境准备、在线/离线两种安装方式的具体步骤,包括主机名设置、swap关闭、数据目录配置等。重点讲解了Sealos的安装命令参数说明,以及添加/删除节点等常用操作。推荐使用Calico网络组件确保稳定性,并附有安装成功后的验证截图。该指南能帮助用户快速搭建一个包含master和worker节点的K8s集群,底层基于containerd运行。

欢迎你们到来,希望能帮到大家 463

前端面试题总结

link和@import的区别 1.link是html标签,@import在css里是值导入外部样式表 2.页面被加载时,link会被同时加载,而import会等它先加载完再加载 3.import只支持IE5以上才支持,而link是css样式,没有兼容问题 4.link比import权重要大 5.link支持javascript改变样式,而import不支持 javescript原型和原型链 每一个函数对象里都有一个prototype属性,被称为显示原型 每一个实例对象里都有一个_ _ proto _ _属

zxlong020的博客 1479

MimicKit 人形机器人强化学习全身模仿控制算法使用教程

本文介绍了MimicKit运动模仿算法框架的使用指南。主要内容包括:1)安装IsaacGym和依赖项;2)训练模型命令及参数说明;3)测试模型的方法;4)分布式训练配置;5)使用TensorBoard可视化日志;6)动作数据格式说明。该框架支持DeepMimic、AMP、ASE、ADD等算法,包含PPO、AWR等强化学习算法,适用于物理仿真角色动画控制研究。

机器人控制与仿真应用 1201

【GlobalMapper精品教程】038:模拟水位上升(洪水淹没分析)案例教程

基于数字高程模型 ( DEM )格网模型,实现给定水深情况下洪水淹没区的计算模型,讨论洪水淹没演进过程可视化实现的关键技术,以三维可视化方式,动态而形象地模拟在指定洪水水位下的洪水淹没演进过程。

智慧空间实验室 2884

每日进步一点点

今日励志语: 朝着自己的方向走,至少你是快乐的 今日知识点:原型链 今日面试题:src 与 href 的区别 答:src(source)指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在 请求 src 资源时会将其指向的资源下载并应用到文档中,如 js 脚本,img 图片和 iframe 等元素。 当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,类似于将所指向资源嵌入当前标签内。 href(hypertext reference/超文本引用)指向网络资

weixin_48292956的博客 113

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

JavaScript前端面试题总结

1、em和rem 像素(px):用于元素的边框或定位。 em/rem:用于做响应式页面,em相对于父元素,rem相对于根元素。 rem 单位翻译为像素值是由 html 元素的字体大小决定的。 此字体大小会被浏览器中字体大小的设置影响,除非显式重写一个具体单位。 em 单位转为像素值,取决于他们使用的字体大小。 此字体大小受从父元素继承过来的字体大小,除非显式重写与一个具体单位。 ...

weixin_30932215的博客 91

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

(10)WEB复习

文章目录名词解释1:HTTP2:XML3:REST4:Ajax5:SVG6:XSS7:RIA8:WSDL9:MashUp10:IP11:DNS12:URI13:URL14:URN15:网络机器人16:web的进阶17:插件18:四个常用的优化技术19:优化的思路20:具体的优化方式21:为什么要使用闭包22:CSS的选择器的类型23:CSS的新特性24:为什么要是用JS的严格模式25 严格模式中有哪些要求26 let,var,const的区别27 闭包是什么,举出例子并说明作用28 正则表达式1:邮箱2:正

weixin_44412864的博客 249

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

你应该知道的前端面试题(万字总结)

前言 自己整理出来的一些前端工程师必备的面试题,面试中出场率很高,相信小伙伴在找工作或者跳槽中能够顺利找到自己想要的工作。 Html 1、DOCTYPE有什么作用?标准模式与混杂模式如何区分?它们有何意义? DOCTYPE的作用是告诉浏览器使用哪种版本的HTML规范来渲染文档。当DOCTYPE不存在或者形式不正确时会导致HTML文档以混杂模式解析文档。标准模式以浏览器支持的最高标准运行,混杂模...

Talljack 的博客园 2291

前端基础面试题

一.HTML和CSS 1.每个 HTML 文件里开头都有个很重要的东西,Doctype,知道这是干什么的吗?

m0_44973790的博客 464

前端面试总结

本文包含了html、css、js在面试中的各类考题

qq_70876597的博客 95

服务器前端机中转机制,『中高级前端面试』之终极知识点

作者:陈大鱼头Chrome浏览器进程在资源不足的设备上,将服务合并到浏览器进程中浏览器主进程负责浏览器界面显示各个页面的管理,创建以及销毁将渲染进程的结果绘制到用户界面上网络资源管理GPU进程用于3D渲染绘制网络进程发起网络请求插件进程第三方插件处理,运行在沙箱中渲染进程页面渲染脚本执行事件处理网络传输流程生成HTTP请求消息输入网址浏览浏览器解析URL生成HTTP请求信息收到响应| 状态码 | ...

weixin_39993623的博客 279

【一名合格前端工程师的自检清单】--自检答案

作者:code秘密花园 公号 / ConardLi 微信公众号的文章链接:https://mp.weixin.qq.com/s?__biz=MzAxODE2MjM1MA==&mid=2651556338&idx=1&sn=589976a52b9162ec8d7a9a165cbfac7d&chksm=80255e33b752d7257f4ed1e36560a496c097c77b5ac922adc0f11a7b2c86b7654ba77e1a255a&scene=..

PigBiBiX的博客 1185

前端面试题汇总和知识点

2017年前端面试题整理汇总100题2018前端面试准备前端面试常见问题按知识点分类整理44 个 JavaScript 变态题解析ECMAScript 6 入门深入浅出JavaScript之原型链&继承剖析Vue原理&实现双向绑定MVVMangular原理及模块简介angular 依赖注入原理Flex 布局教程rem与em的使用和区别详解XSS跨站脚本攻击-XSS攻击的三种类型cs...

hujingn的博客 784
上一篇: 几点建议帮你写出简洁的JS代码-转自别人的博客
下一篇: File的知识学习
何厚勋
博客等级 码龄10年 14粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值