最新发布公告» | 其他发布»

这是另一个令人印象深刻的版本!今天启动版本11.2

我们最新的研发成果

今天,我很高兴宣布我们研发渠道的最新成果:版本11.2Wolfram语言Mathematica-可立即在桌面(Mac, Windows, Linux)和云。

这只是今年春天,我们发布版本11.1.但是夏季过后,我们现在已经准备好另一个令人印象深刻的释放,各类补充和增强功能,包括100多个全新的功能:

单词云

对于我们的发布,我们有一个非常谨慎的策略。Integer发布(如11)集中于我们将在未来构建的主要完整的新框架。”。1”发布(如11.2),意在从我们的R&d管线提供新的能力的最新输出的快照,大,小,尽快为他们准备好了。

版本11.2中包含了许多内容——从对现有主要框架进行最后润色的内容,到对正在构建的主要框架的初步提示。我个人的职责之一就是确保我们所添加的所有内容都经过了连贯的设计,并以一种统一的方式符合系统的长期愿景。

当我们准备发布的时候,我已经参与了很多我们正在添加的新功能,它们开始感觉像是个人朋友。所以当我们在做一个.1版本的时候,看看有什么新功能将为它准备好,这有点像制作一个派对邀请列表:谁将能够合作让我去参加盛大的庆典?

如果是在几年前,可能会有一个不错的清单,但长度不会太长。然而,今天,我只是惊讶于我们的研发管道运行的速度,以及每个月的产出。是的,我们30多年来一直在构建我们的Wolfram语言技术堆栈,我们有一个伟大的团队。但是对于我来说,看到我们能够在11.2这样的1版中向所有用户提供多少内容仍然是一件令人兴奋的事情。

在机器学习进展

很难知道从哪里开始。但让我们选择一个当前的热门领域:机器学习

在Wolfram语言中,我们已经拥有了数十年来被认为是机器学习的功能,2014年我们推出了“机器学习超级功能”分类预测-广泛使用现代机器学习。到2015年初,我们有了最先进的深度学习图像识别技术图像识别,然后,在去年的版本11中,我们开始推出完整的符号神经网络计算系统

我们的目标是推动机器学习的发展,同时以一种良好的、集成的方式提供一切,使各种各样的人都能轻松使用,即使他们不是机器学习专家。在11.2版中,我们实际上使用了机器学习,将自动化添加到我们的机器学习功能中。

所以,特别是,分类预测在版本11.2中要强大得多。他们的基本方案是,你给他们训练数据,他们将从中学习,自动生成一个机器学习分类器或预测器。但要做好这一点,关键是要知道从数据中提取什么特征——不管是图像、声音、文本还是其他什么。在版本11.2中分类预测拥有多种新的内置特征提取器,这些特征提取器已经在各种各样的数据上进行了预先训练。

但最明显的新看点分类预测是他们如何选择要使用的核心机器学习方法(以及超参数)。(顺便说一下,11.2还引入了优化的梯度增强树等内容。)如果你跑了分类预测现在,在笔记本上,你可以看到他们动态地计算和优化他们正在做的事情(不用说,使用机器学习):

分类和预测动画

顺便说一下,您可以随时按Stop停止训练过程。使用新选项TimeGoal你可以明确地说明训练计划的时间,从几秒到几年。

作为一个领域,机器学习现在发展得非常迅速(在我的职业生涯中,我见过十几个这样的超增长领域,而且总是令人兴奋)。我们通用的符号神经网络框架的一个特点是,我们能够取得新的进展,立即将它们整合到我们的长期系统中,并以各种方式建立它们。

在这方面的最前线是功能NetModel-不断增加新的受过训练和未受过训练的模型。(这些模型托管在云中,但下载并缓存以供桌面或嵌入式使用。)例如,几周前NetModel有一个新的模型可以推断照片的地理位置,这是基于基础研究就在几个月前:

NetModel[“针对YFCC100地理标记数据培训的ResNet-101”]

NetModel[“针对YFCC100地理标记数据培训的ResNet-101”]

现在,如果我们给它一张有沙丘的图片,它对可能位置的首要推断似乎是围绕某些沙漠:

", {"TopProbabilities", 50}]]" src="//www.fiberbeat.com/data/uploads/2017/09/InOutImg310.png" alt="GeoBubbleChart[NetModel["ResNet-101 training on YFCC100M Geotagged Data"]["", {" topprobability ", 50}]]" width="513" height="311">

GeoBubbleChart[NetModel["ResNet-101培训YFCC100M地理标记数据"][CloudGet["https://wolfr。am /沙丘”),{“TopProbabilities”,50}]]

NetModel处理网络,可以用于各种各样的目的-不仅作为分类器,而且,例如,作为特征提取器。

基础上NetModel在我们的符号神经网络框架中,我们也能够添加新的内置分类器来直接使用分类.所以,现在,除了喜欢的东西的情绪,我们有NSFW,面对年龄和面部表情(是的,实际的老虎是不是安全的,但在不同的意义上):

"]" src="//www.fiberbeat.com/data/uploads/2017/09/InOutImg41.png" alt="分类(“NSFWImage”、“抑制> <形象”)" width="256" height="84">

分类(“NSFWImage CloudGet [" https://wolfr.am/tiger "]]

我们的内置图像识别函数(可以使用其底层网络访问)NetModel)已被调整和再培训为11.2版,但从根本上它仍然是一个分类。其中的一个与机器学习发生的重要的事情是新类型的功能的开发,支持各种新的工作流程。我们已经得到了很大的发展在这个方向发生的情况,但对于一个11.2新的(和乐趣)的例子是ImageRestyle-拍摄一张照片并应用另一张照片的样式:

", ""]" src="//www.fiberbeat.com/data/uploads/2017/09/InOutImg52.png" alt="ImageRestyle[“”,“”]" width="229" height="292">

ImageRestyle[\[占位符]\[占位符]]

为了纪念这个新功能,也许是时候把图像放到我的个人主页取而代之的是一些更“有风格”的东西——尽管要选择什么有点困难:

"GPU"] & /@ {insert image,insert image,insert image,insert image,insert image,insert image}" src="//www.fiberbeat.com/data/uploads/2017/09/InOutImg82.png" alt="ImageRestyle[#,[]性能主题->质量,目标设备->GPU]&/{插入图像,插入图像,插入图像,插入图像,插入图像}" width="536" height="139">

ImageRestyle画廊

ImageRestyle[#, , PerformanceGoal -> "Quality", TargetDevice -> "GPU"] & /@ {\[Placeholder], \[Placeholder], \[Placeholder], \ \[Placeholder], \[Placeholder], \[Placeholder]}

顺便说一下,11.2的另一个新特性是能够直接输出训练过的网络和其他机器学习功能。如果你只对一个实际的网络感兴趣,你可以进入MXNet格式-适合在任何地方立即执行MXNet支持。在典型的实际情况下,还需要一些预处理和后处理,完整的功能可以在中导出WMLF(钨机器学习格式)

云(和iOS)笔记本

我们发明了思想的笔记本电脑早在1988年,对于数学1.0,以及在过去29年中,我们一直在不断改进和扩展他们的桌面系统是如何工作的。大约九年前,我们也开始将我们的笔记本接口网络的非常复杂的过程浏览器,能够直接在云中运行的笔记本电脑,而无需本地安装。

这是一段漫长而艰难的旅程,但是在Wolfram语言的新特性和新的web技术之间(比如同构反应,流动,莫布),以及软件工程的巨大努力,我们终于到达了这样一个点:我们的云笔记本电脑已经准备好了,可以在黄金时间使用了。就像,试试这个

笔记本

我们实际上是连续发布Wolfram云但是在Wolfram语言的11.2版本中,我们可以为云笔记本添加最后一层优化和调优。

你可以直接在网上创建和计算,也可以立即“剥离”笔记本电脑,在台式机上运行。或者你可以从台式机启动,立即将笔记本电脑推到云上,这样它就可以被共享、嵌入——以及在云上进一步编辑或计算。

顺便说一下,当您使用Wolfram云时,您并不局限于桌面系统。和Wolfram云应用在美国,你也可以在移动设备上使用笔记本电脑。现在版本11.2已经发布了,我们能够推出一个新的Wolfram云应用程序版本,这使得在你的手机上编写Wolfram语言代码变得惊人的现实(感谢一些整洁的UX想法)。

说到移动设备,还有那是未来的另一件大事:互动iOS设备,平板电脑和手机本地完全与本地运行钨笔记本电脑。这是另一个英雄的软件工程项目,这实际上开始了近早在云笔记本项目。

我们的目标是能够在iOS设备上阅读和交互——但不是直接使用作者笔记本。现在有了下周发布的Wolfram Player应用,你可以在你的iOS设备上有一个笔记本,然后使用操作以及其他动态内容,以及阅读和浏览笔记本——整个界面本机适应触摸环境。

多年来,当人们通过电子邮件给我发送笔记本附件时,我一直感到沮丧,我不得不做一些事情,比如把它们上传到云端,才能在手机上阅读它们。但现在有了iOS上的原生笔记本,我可以直接从电子邮件中读取笔记本附件。

数学极限

数学是Wolfram语言的第一个大型应用程序(这就是为什么它被称为Mathematica30多年来,我们一直致力于积极推进研发,以扩大可计算的数学领域。在11.2版本中,我们在数学方面取得的最大进步是在极限领域。

Mathematica 1.0早在1988年就已经有了基础限制函数。这么多年来限制但是在11.2中,由于我们在过去几年中开发的算法,它达到了一个全新的水平。

计算极限的简单方法是计算幂级数的第一项。但当函数增长过快或奇点混乱时,这就不起作用了。但在11.2,我们开发的新算法在处理这样的事情上没有问题:

限制(E ^ (E ^ + x ^ 2)(小块土地(E ^ - E ^ x - x)——小块土地[x]), x - > \[无穷]]

限制(E ^ (E ^ + x ^ 2)(小块土地(E ^ - E ^ x - x)——小块土地[x]), x - > \[无穷]]
-Infinity]" src="//www.fiberbeat.com/data/uploads/2017/09/InOutImg141.png" alt="“极限[3*x+Sqrt[9*x^2+4*x-Sin[x]],x->-无穷大]" width="265" height="76">

极限[(3x+Sqrt[9x^2+4x-Sin[x]]),x->-\[无限]]

这很方便,我们有一个数百万复杂极限问题的测试集,人们已经问过了Wolfram | Alpha关于过去的几年里,我很高兴地说,我们的新算法,我们现在就可以立即处理它们的96%以上。

从某种意义上说,极限是微积分和连续数学的核心——而要正确地计算它们,需要大量关于数学各个领域的知识。多元限制尤其棘手——许多教科书的主要结论基本上都是“很难做到正确”。在11.2中,多亏了我们的新算法(以及代数、泛函分析和几何能力的大量支持),我们终于能够正确地处理非常广泛的多元极限问题——是否有一个确定的答案,或者极限是否可以证明是不确定的。

版本11.2还引入了另外两个方便的数学结构:MaxLimitMinLimit(有时被称为lim sup和lim inf)。普通的极限有个习惯是不确定的每当事情变得不稳定,但是MaxLimitMinLimit有明确的值,并且是在应用中最经常出现的。

因此,例如,没有在这里明确普通限制:

极限[Sin[x] + Cos[x/4], x ->∞]

极限[Sin[x]+Cos[x/4],x->\[Infinity]]

但是有一个MaxLimit,这是一个复杂的代数数:

MaxLimit[Sin[x] + Cos[x/4], x -> \[Infinity]] // FullSimplify

MaxLimit[Sin[x] + Cos[x/4], x -> \[Infinity]] // FullSimplify
N [%]

N [%]

11.2中的另一个新构造是DiscreteLimit,这就给出了序列的极限,就像这里的例子素数定理

离散限制[Prime[n]/(n*Log[n]),n->无穷大]

离散极限[素数[n]/(n Log[n]), n -> \[无穷大]]

这里给出了递归关系解的极限值

DiscreteLimit [RSolveValue [{X [N + 1] ==的Sqrt [1 + X [n]的+ 1 / X [n]的],X [1] == 3}中,x [n]的,N],正>\[无限]]

DiscreteLimit [RSolveValue [{x (n + 1) = =√6 [1 + x [n] + 1 / x [n]], x [1] = = 3}, x [n], n], n - > \[无穷]]

各种新数据

总有新的数据Wolfram知识库——每秒钟都从各种数据反馈中流动,并由我们的策展人和策展系统系统地添加。我们的云和桌面系统的架构允许新的数据和新的数据类型(以及它的自然语言输入)在Wolfram知识库中立即可用。

在版本11.1和版本11.2之间,对知识库进行了数百万次更新。还添加了一些新的数据类型。例如,经过几年的发展,我们现在已经得到了历史上所有著名的军事冲突、战斗等的精心整理的数据:

实体(“MilitaryConflict”、“SecondPunicWar”)[EntityProperty[“MilitaryConflict”、“战斗”]]

实体[“军事冲突”,“第二次punicwar”][实体属性[“军事冲突”,“战斗”]]
地理列表图[%]

地理列表图[%]

在11.2的新的另一件事是大大提高了数据的预测缓存在Wolfram语言,使之更有效的计算处理大量从钨知识库策划的数据。

顺便说一下,11.2版是自发布以来发布的第一个新版本Wolfram数据存储库通过数据存储库,11.2可以访问范围非常广泛的近600个精心策划的数据集。11.2现在还支持以下功能ResourceSubmit,以编程方式提交数据,以便在Wolfram数据存储库中发布。(你也可以自己发布数据CloudDeploy.)

在Wolfram|Alpha中有大量的数据和计算类型——经过大量的努力,这些数据和计算类型已经达到了可以依赖的水平,至少对于Wolfram|Alpha中典型的一次性使用来说是这样的。但是,我们的长期目标之一是尽可能多地处理一些领域,并将其级别提高到可以将其构建到核心Wolfram语言中,并依赖于系统编程使用的程度。

在版本11.2中,发生这种情况的区域是海洋潮汐。现在有一个函数蒂德达塔它可以为世界上任何一个潮汐站提供潮汐预测。实际上,我发现自己在最近的一次现场编码会议中使用了这个功能——碰巧我需要知道1913年阿伯丁港的每日水位。(看抽搐记录找出原因!)

TideData[实体[“城市”,“阿伯丁”,“马里兰州”,“美国],“水位”,日期范围[日期对象[{1913,1,1}],日期对象[{1913,12,31}],“日]

潮汐数据[Entity["City", {"Aberdeen", "Maryland", " usa "}], "WaterLevel", DateRange[DateObject[{1913, 1,1}], DateObject[{1913, 12, 31}], "Day"]]
DateListPlot (%)

DateListPlot (%)

GeoImage

地理学以及相关的功能都内置了获得世界的详细地图。他们还必须获得低分辨率的卫星图像。但是在11.2版本有一个新功能GeoImage利用综合外部服务提供全分辨率卫星图像:

GeoImage[GeoDisk[实体[“建筑”,“五边形::qzh8d”],数量[0.4,“英里”]]

GeoImage[GeoDisk[实体[“建筑”,“五边形::qzh8d”],数量[0.4,“英里”]]
GeoImage[GeoDisk[Entity[

GeoImage[GeoDisk[Entity["Building", "Stonehenge::46k59"], Quantity[250, "Feet"]]

我最后用了GeoImage每个两者中的一个livecoding会话是的,原则上,人们可以上网找到某个地方的卫星图像,但当人们可以通过编程将卫星图像直接输入Wolfram语言,然后将其输入到Wolfram语言中时,人们可以获得不同程度的实用性,这真是令人惊讶图像处理可视化机器学习功能。就像这是一个特征空间的情节加州火山的卫星图像:

FeatureSpacePlot [GeoImage / @ GeoEntities [实体[ “AdministrativeDivision”,{ “加利福尼亚”, “UnitedStates的”}], “火山”]]

FeatureSpacePlot[GeoImage /@ GeoEntities[Entity["AdministrativeDivision", {"California", " usa "}], "Volcano"]]

我们总是在Wolfram知识库中更新和添加各种地理数据。例如,从11.2版开始,我们现在有了月球的高分辨率地理高度数据——这对我们最近的研究非常有用精密日食计算项目

None]" width="564" height="433" src="//www.fiberbeat.com/data/uploads/2017/09/InOutImg271.png" alt="ListPlot3D[GeoElevationData[GeoDisk[Entity[“MannedSpaceMission”,“Apollol15”][EntityProperty[“MannedSpaceMission”,“LandingPosition”]],数量[10,“Miles”]],网格->无]“width=”564“height=”433" width="619" height="431">

ListPlot3D [GeoElevationData [GeoDisk [实体[ “MannedSpaceMission”, “Apollo15”] [EntityProperty [ “MannedSpaceMission”, “LandingPosition”]],数量[10, “数”]]],网状 - >无]

可视化

Wolfram语言的一个明显优势是它广泛的集成和高度自动化的可视化功能。版本11.2增加了一些方便的新函数和选项。一个例子是StackedListPlot,顾名思义,它可以生成堆叠(累积)列表图:

StackedListPlot [RandomInteger[10、30 {3}]]

StackedListPlot [RandomInteger[10、30 {3}]]

还有StackedDateListPlot,此处使用Wolfram知识库中的历史时间序列:

stackdatelistplot [EntityClass[ takellargest [10]}][date ["Population", All], "Association"], PlotLabels -> Automatic]" title="StackedDateListPlot[ EntityClass[ "Country", { EntityProperty["Country", "Population"] -> TakeLargest[10]}][ Dated["Population", All], "Association"], PlotLabels -> Automatic]" width="551" height="294" class="alignnone size-full wp-image-14564">

stackdatelistplot [EntityClass["Country", {EntityProperty["Country", "Population"] -> takellargest [10]}][date ["Population", All], "Association"], PlotLabels -> Automatic]
StackedDateListPlot[  EntityClass[   TakeLargest[10]}][ Dated["Population", All], "Association"], PlotLabels -> Automatic, PlotLayout -> "Percentile"]" title="StackedDateListPlot[ EntityClass[ "Country", { EntityProperty["Country", "Population"] -> TakeLargest[10]}][ Dated["Population", All], "Association"], PlotLabels -> Automatic, PlotLayout -> "Percentile"]" width="518" height="304" class="alignnone size-full wp-image-14567">

stackdatelistplot [EntityClass["Country", {EntityProperty["Country", "Population"] -> takellargest [10]}][date ["Population", All], "Association"], PlotLabels -> Automatic, PlotLayout -> " percentage "]

我们在Wolfram语言中的一个目标是尽可能自动地做出好的风格选择。例如,在11.2版中,我们添加了一整套情节主题AnatomyPlot3D。您始终可以显式提供所需的任何样式。但我们提供了许多默认主题。您可以选择经典的解剖学书籍外观(顺便说一句,所有这些3D对象都是完全可操作和可计算的):

"Classic"]" src="//www.fiberbeat.com/data/uploads/2017/09/InOutImg312.png" alt="AnatomyPlot3D[实体[“解剖结构”,“左”],PlotTheme ->“经典”]" width="479" height="353">

AnatomyPlot3D[实体[“解剖结构”,“左”],PlotTheme ->“经典”]

或者你可以再来点灰色的解剖看:

"Vintage"]" src="//www.fiberbeat.com/data/uploads/2017/09/InOutImg321.png" alt="AnatomyPlot3D[实体[“解剖结构”,“左手”],绘图主题->“复古”]" width="483" height="353">

AnatomyPlot3D[实体[“解剖结构”,“左手”],绘图主题->“复古”]

或者你可以有一个“科学”主题,试图使不同的结构尽可能不同:

"Scientific"]" src="//www.fiberbeat.com/data/uploads/2017/09/InOutImg331.png" alt="AnatomyPlot3D[实体[“解剖结构”,“左及”],PlotTheme ->“科学”]" width="493" height="360">

stackdatelistplot [EntityClass["Country", {EntityProperty["Country", "Population"] -> takellargest [10]}][date ["Population", All], "Association"], PlotLabels -> Automatic, PlotLayout -> " percentage "]

三维计算几何

Wolfram语言具有很强的计算几何能力——既可以在精确曲面上工作,也可以在近似网格上工作。在3d中流畅地处理构造几何是一个巨大的算法挑战,但经过多年的工作,Version 11.2可以做到:

RegionIntersection[MengerMesh[2,3],<br /> boundary discrete region [Ball[{1,1,1}]]

RegionIntersection[MengerMesh[2,3], boundary discrete region [Ball[{1,1,1}]]

当然,一切都立即融入了系统的其余部分:

体积(%)

体积(%)

更多的音频

版本11引入了一个主要的新框架,用于在Wolfram语言中进行大规模的音频处理。我们仍在开发基于这个框架的各种能力,特别是使用机器学习。在版本11.2中有许多立即增强。有一些非常实用的东西,比如内置的支持AudioCapture在Linux下。现在还有动态的概念AudioStream,其回放可通过编程控制。

另一个新功能是SpeechSynthesize,它从文本中创建音频:

演讲稿[“你好”]

演讲稿[“你好”]
光谱图(%)

光谱图(%)

捕捉屏幕

Wolfram语言试图让您随时随地获取数据。版本11.2增加的一项功能是能够捕获计算机屏幕的图像。(栅格化已经能够栅格化完整的笔记本很长时间;CurrentNotebookImage现在可以在屏幕上捕捉到从笔记本上可见的图像。)以下是我的主(第一个)屏幕的图片,是我写这篇文章时拍摄的:

当前屏幕图像[1]

CurrentScreen输出

当前屏幕图像[1]

当然,我现在可以在这个图像上进行计算,就像我在其他图像上做的一样。以下是我屏幕不同部分的“显著性”推断图:

"]//Colorize" src="//www.fiberbeat.com/data/uploads/2017/09/InOutImg402.png" alt="ImageSaliencyFilter [ “<图像抑制>”] //彩色化" width="459" height="313">

ImageSaliecyFilter[CurrentScreenImage[1]//着色

语言功能

开发钨语言的一部分是增加重要的新框架。但另一部分抛光系统,并实现新的功能,在系统使处事以往更容易,更流畅,更清晰。

下面是我们在11.2中添加的几个函数。第一个函数很简单,但很有用:TakeList-a函数,它从列表中连续取元素块:

TakeList[字母表[],{2,5,3,4}]

TakeList[字母表[],{2,5,3,4}]

还有芬德雷普特(a)“同事”FindTransientRepeat),在这里找到Fibonacci序列mod 10的精确重复序列:

FindRepeat[国防部[数组(斐波纳契,500),10]]

FindRepeat[国防部[数组(斐波纳契,500),10]]

这是一个非常不同的新功能:一个附加的资本化它应用了“重要单词”大写的启发式,使某些东西成为“标题大小写”。(是的,对于单个字符串,这看起来不是很有用;但当你有来自不同来源的100个字符串来保持一致时,它真的很有用。)

大写[“一种新的科学”,“标题案件”]

大写[“一种新的科学”,“标题案件”]

说到表示,这里有一个简单但非常有用的新输出格式:DecimalForm.数字变大时通常用科学符号表示,但是DecimalForm强制“小学”编号格式,无科学符号:

表[16.5 ^ N,{N,10}]

表[16.5 ^ N,{N,10}]
十进制[表[16.5^n,{n,10}]]

十进制[表[16.5^n,{n,10}]]

11.2中增加的另一个语言增强功能——尽管它更像是未来的种子——是TwoWayRule,输入为<->。从1.0版本开始规则(>),多年来我们发现规则作为一种惰性结构越来越有用,可以象征性地表示各种变换和连接。规则基本上是单向的:“左边到右边”。但有时也需要一个双向版本——这就是TwoWayRule提供。

马上TwoWayRule可以使用,例如,把在图中无向边,或双电平输入到交换转置.但在未来,它将会得到越来越广泛的应用。

图[{1<->2,2<->3,3<->1}]

图[{1<->2,2<->3,3<->1}]

11.2有各种各样的其他语言增强。这里有一个不同的例子:函数StringToByteArrayByteArrayToString,其处理生字节数组,并用不同的编码串之间进行转换(例如UTF-8)的有点棘手问题。

初始化和系统操作

如何让Wolfram语言以某种特定的方式自动初始化自己?从1.0版本开始,您就已经能够设置init了。在初始化时运行M文件。但是现在在11.2版本中有了一种更通用的编程方式——使用初始化值和相关的结构。

它是由成为可能PersistentValue11.1中介绍的框架。特别好的是,它允许一系列的“持久化位置”——因此,您可以将初始化信息存储在每个会话、每台计算机、每名用户或每台笔记本上(11.2版新增)。

谈到一直到1.0版的东西,这里有一个小故事。回到1.0版,Mathematica(当时的情况)几乎总是用来显示计算机上还有多少内存可用(是的,当时你必须非常小心,因为通常没有太多内存)随着虚拟内存的普及,人们开始认为“可用内存”并不重要,于是我们停止显示它。但现在,在虚拟内存消失了25多年后,现代操作系统让我们重新使用它,并实现了一个新功能MemoryAvailable在11.2版本中。是的,对我的电脑来说,结果比1988年增加了5位:

可记忆[]

MemoryAvailable []

统一的异步任务

在Wolfram语言中已经有一些方法可以完成一些异步或“后台”任务,但是在11.2中有一个完整的系统框架。有个东西叫TaskObject这象征性地表示异步任务。而且还有现在基本上可以执行三种方式这样的任务。首先,有云提交,它提交任务以在云中执行LocalSubmit,它提交要在本地计算机上执行的任务,但要在单独的子内核中执行。最后,有SessionSubmit,它以空闲时间在当前Wolfram Language会话中执行任务。

当您提交任务时,它将停止执行(您可以使用ScheduledTask).你从任务“听到反馈”的方式是通过“处理函数”:当你提交任务时设置的函数,用来“处理”在任务执行期间可能发生的某些事件(完成,错误,等等)。

还有类似的功能TaskSuspend,TaskAbort,TaskWait诸如此类,这让你可以“从外部”与任务互动。是的,例如,当你在进行大型机器学习培训时,这非常方便。

连通性

我们总是热衷于让Wolfram语言尽可能地连接起来。在11.2版本中,我们添加了各种特性来实现这一点。在第11版中,我们引入了验证选项,它允许您在函数中提供凭据,如URLExecute.版本11已经允许了许可证(也就是“app id”)。在11.2中,您现在可以提供明确的用户名和密码,您还可以使用SecuredAuthenticationKey提供OAuth凭据。这是一件棘手的事情,但我很高兴我们能够使用Wolfram语言的符号字符来清晰地表示它——例如,当你实际使用一堆内部网站或api时,它真的非常有用。

早在10版(2014),我们介绍了使用的非常强大的想法APIFunction为web api提供符号规范,可以使用该规范部署到云CloudDeploy.然后在版本10.2中我们引入了MailReceiverFunction它不响应网络请求,而是接收邮件信息。(顺便说一下,在第11.2节我们已经大大加强了发邮件,特别是添加了各种身份验证和地址验证功能。)

在版本11中,我们引入了通道框架,它允许Wolfram语言实例(和外部程序)之间的发布-订阅交互,支持聊天等功能,以及大量有用的内部服务。在我们不断的自动化和统一过程中,我们将在11.2中介绍ChannelReceiverFunction——可以部署到云上,以响应在特定通道上发送的任何消息。

在低级的Wolfram语言软件工程中,我们已经使用套接字很长时间了。几年前,我们开始在语言中公开一些套接字功能。现在在11.2中,我们有了一个完整的套接字框架。套接字框架既支持传统TCP套接字,也支持现代ZeroMQ套接字。

外部程序

从一开始,Wolfram语言就能够与外部C程序进行通信——实际上是使用它的本地程序WSTP(Wolfram符号传输协议)符号表达式传输协议。年前J /链接.NetLink启用了与Java和.Net程序的无缝连接。RLink对r也做了同样的处理,然后有一些像LibraryLink,允许直接连接到dll或RunProcess用于从shell运行程序。

但11.2引入了一种新的外部程序通信形式:ExternalEvaluateExternalEvaluate用于在类似Wolfram语言支持REPL风格输入/输出的语言中进行计算。11.2中提供的前两个示例是Python和NodeJS。

下面是一个使用NodeJS完成的计算,不过直接使用Wolfram语言肯定会更好:

外部评估[“NodeJS”,“Math.sqrt(50)”]

外部评估[“NodeJS”,“Math.sqrt(50)”]

这是一个Python计算(是的,使用& for相当时髦BITAND):

ExternalEvaluate[

ExternalEvaluate["Python", "[i & 10 for i in range(10)]"]

当然,当人们访问大型外部代码库或库时,事情开始变得有用。很好的是,我们可以使用Wolfram语言来控制一切,并分析结果。ExternalEvaluate在某种意义上是一种非常轻量级的构造——人们甚至可以在某些Wolfram语言代码的深处经常使用它。

周围有基础设施ExternalEvaluate,旨在连接到正确的可执行文件,适当地转换类型,等等StartExternalSession,它允许您启动单个外部会话,然后在其中执行多个评估。

整个列表

那么关于11.2还有更多的话要说吗?是的!有很多新功能和特性我都没有提到。下面是一个例子更广泛的列表

新功能

但是如果你想了解11.2,最好的办法是运行它.我实际上已经在我的个人计算机上运行的11.2预发行版本的几个月。所以,现在我正在新的特性和功能很理所当然,尽管较早前,我一直在说:“这是真正有用的;怎么可能,我们都没有这个30年?”。那么,现实的,它采取的一切建筑,我们有这么远不仅提供了技术基础,同时也播种思想,为11.2。但现在我们对11.2的工作已经完成,且11.2是准备去外面的世界和我们几十年的研究和开发提供的最新成果。

发表评论,请浏览这篇文章的复印件在Wolfram博客»

Baidu