《智能前端技术与实践》——第 2 章 前端开发基础 ——2.6 深度学习中的 JavaScript——2.6.1 JavaScript数据类型

本文涉及的产品
可视分析地图(DataV-Atlas),3 个项目,100M 存储空间
简介: 《智能前端技术与实践》——第 2 章 前端开发基础 ——2.6 深度学习中的 JavaScript——2.6.1 JavaScript数据类型

2.6 深度学习中的 JavaScript


本节将介绍深度学习领域所涉及的前端知识,包括深度学习中的 JavaScript 数据类型和 JavaScript 异步编程。


2.6.1 JavaScript 数据类型


深度学习中基本的数据结构是张量,高效的数据结构对任何一个深度学习项目都非常重要。 在 C/C++中,我们可以通过数组来高效地存储一些集合数据并实现快速访问;在 Python 中, 我们可以通过 NumPy 中的 NDArray 对象来实现此功能。NDArray 对象是一系列同类型数据的 集合,用于存放同类型元素的多维数组。


深度学习中支持的 JavaScript 数据类型是 TypedArray,它是一种介于原始数组与 NDArray 之间的数据结构。在现代浏览器中有 11 种类型的 TypedArray,如表 2-8 所示。


image.png

image.png


接下来,介绍 ArrayBuffer 及访问 ArrayBuffer 的两种方法——TypedArray 和 DataView。


1.ArrayBuffer


ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区,它是一个字节数 组。由于 ArrayBuffer 仅仅是内存上的二进制缓冲区,因此它并不提供任何操作数据(读取数 据、写入数据)的方法,即我们并不能直接操作 ArrayBuffer 的内容,而要通过 TypedArray 或 DataView 对象来操作。它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写 缓冲区中的内容,如代码清单 2-22 所示。


代码清单 2-22


constbuffer=newArrayBuffer(4)
console.log(buffer.byteLength) //4

2.TypedArray


TypedArray(类型化数组)对象描述了一个底层的二进制数据缓冲区的类数组视图。 TypedArray 定义了如何访问底层的 ArrayBuffer,实际上用于存储数据的数据结构是 ArrayBuffer, 没有名为 TypedArray 的全局属性,也没有名为 TypedArray 的构造函数。示例代码如代码 清单 2-23 所示。


代码清单 2-23


consttypedArray1=newInt8Array(8);
typedArray1[0] =128;
consttypedArray2=newInt8Array(typedArray1);
typedArray2[1] =20;
console.log(typedArray1);
// 期望输出: Int8Array [-128, 0, 0, 0, 0, 0, 0, 0]console.log(typedArray2);
// 期望输出: Int8Array [-128, 20, 0, 0, 0, 0, 0, 0]

由于 Int8Array 中单个元素值的范围是−128~127,因此当指定 typedArray1 数组的第一个元素 为 128 时,该值超出范围,于是会从另一边界重新开始循环,即值为−128。


3.DataView


DataView 是一个可以从二进制 ArrayBuffer 对象中读写多种数值类型的底层接口,在使用 它时,无须考虑不同平台的字节序问题,如代码清单 2-24 所示。


代码清单 2-24

varbuffer=newArrayBuffer(4)
newDataView(buffer).setInt16(0,42,true)
console.log(newUint8Array(buffer))

我们首先在代码清单 2-24 中创建了 4 字节大小的 ArrayBuffer,然后将已经创建的 ArrayBuffer 作为数据源并创建 DataView 对象,并通过 setInt16()方法创建起始位置为 0、值为 42 的 16 位 整数。我们还指定 setInt16()方法的参数 littleEndian 为 true,即采用小端字节序(低位字节放在 内存的低地址端,高位字节放在内存的高地址端)。该参数的默认值为 false,即默认采用大端 字节序。上述代码的运行结果如下。


Uint8Array [42, 0, 0, 0]
相关实践学习
DataV Board用户界面概览
本实验带领用户熟悉DataV Board这款可视化产品的用户界面
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3 )前置知识要求   课程大纲 第一章 了解数据仓库概念 初步了解数据仓库是干什么的 第二章 按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章 数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章 采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章 用户行为数据仓库 严格按照企业的标准开发 第六章 搭建业务数仓理论基础和对表的分类同步 第七章 业务数仓的搭建  业务行为数仓效果图  
相关文章
|
2月前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
55 1
|
2月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
2月前
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
2月前
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
|
24天前
|
存储 JavaScript 前端开发
JavaScript中的数据类型以及存储上的差别
通过本文的介绍,希望您能够深入理解JavaScript中的数据类型及其存储差别,并在实际编程中灵活运用这些知识,以提高代码的性能和稳定性。
50 3
|
2月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
50 6
|
2月前
|
前端开发 JavaScript 搜索推荐
前端懒加载:提升页面性能的关键技术
前端懒加载是一种优化网页加载速度的技术,通过延迟加载非首屏内容,减少初始加载时间,提高用户访问体验和页面性能。
|
2月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
62 5
|
2月前
|
缓存 前端开发 JavaScript
JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式
本文深入解析了JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式(Hash路由和History路由)、优点及挑战,并通过实际案例分析,帮助开发者更好地理解和应用这一关键技术,提升用户体验。
89 1
|
2月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
59 4
下一篇
开通oss服务