Latest Release Announcement » | Other Releases »

The R&D Pipeline Continues: Launching Version 11.1

A Minor Release That's Not Minor

I'm pleased to announce the release today of Version 11.1 of theWolfram Language(andMathematica).As of now,Version 11.1 is what's running in theWolfram Cloud—and desktop versions are available for immediate download for Mac,Windows and Linux.

What's new in Version 11.1?Well,actually a remarkable amount.Here's asummary:

Summary of new features

There's a lot here.One might think that a .1 release,nearly 29 years afterVersion 1.0,wouldn't have much new any more.But that's not how things work with the Wolfram Language,or with our company.Instead,as we've built our technology stack and our procedures,rather than progressively slowing down,we've been continually accelerating.And now even something as notionally small as the Version 11.1 release packs an amazing amount of R&D,and new functionality.

A Visual Change

There's one very obvious change in 11.1: the documentation looks different.We've spiffed up the design,and on the web we've made everything responsive to window width—so it looks good even when it's in a narrow sidebar in the cloud,or on a phone.

Wolfram Language documentation

We've also introduced some new design elements—like the mini-view of the Details section.Most people like to see examples as soon as they get to a function page.But it's important not to forget the Details—and the mini-view provides what amounts to a little "ad"for them.

Examples and details

Lots of New Functions

Here's a word cloud of new functions in Version 11.1:

Word cloud of new functions

Altogether there are an impressive 132 new functions—together with another 98 that have been significantly enhanced.These functions represent the finished output of our R&D pipeline in just the few months that have elapsed sinceVersion 11.0 was released.

When we bring out a major "integer"release—like Version 11—we're typically introducing a bunch of complete,新框架。In (supposedly) minor .1 releases like Version 11.1,we're not aiming for complete new frameworks.Instead,there's typically new functionality that's adding to existing frameworks—together with a few (sometimes "experimental") hints of major new frameworks to come.Oh,and if a complete,new framework does happen to be finished in time for a .1 release,it'll be there too.

Neural Nets

One very hot area in which Version 11.1 makes some big steps forward isneural nets.It's been exciting over the past few years to see this area advance so quickly in the world at large,and it's been great to see the Wolfram Language at the very leading edge of what's being done.

Our goal is to define a very high-level interface to neural nets,that's completely integrated into the Wolfram Language.Version 11.1 adds some new recently developed building blocks—in particular 30 new types of neural net layers (more than double what was there in 11.0),together with automated support for recurrent nets.The concept is always to let the neural net be specified symbolically in the Wolfram Language,then let the language automatically fill in the details,interface with low-level libraries,etc.It's something that's very convenient for ordinary feed-forward networks (tensor sizes are all knitted together automatically,etc.)—but for recurrent nets (with variable-length sequences,etc.) it's something that's basically essential if one's going to avoid lots of low-level programming.

Another crucial feature of neural nets in the Wolfram Language is that it's set up to be automatic to encode images,text or whatever in an appropriate way.In Version 11.1,NetEncoderandNetDecodercover a lot of new cases—extending what's integrated into the Wolfram Language.

It's worth saying that underneath the whole integrated symbolic interface,the Wolfram Language is using a very efficient low-level library—currentlyMXNet—which takes care of optimizing ultimate performance for the latest CPU and GPU configurations.By the way,another feature enhanced in 11.1 is the ability to store complete neural net specifications,complete with encoders,etc.in a portable and reusable.wlnetfile.

There's a lot of power in treating neural nets as symbolic objects.In 11.1 there are now functions likeNetMapOperatorandNetFoldOperatorthat symbolically build up new neural nets.And because the neural nets are symbolic,it's easy to manipulate them,for example breaking them apart to monitor what they're doing inside,or systematically comparing the performance of different structures of net.

In some sense,neural net layers are like the machine code of a neural net programming system.In 11.1 there's a convenient function—NetModel—that provides pre-built trained or untrained neural net models.As of today,there are a modest number of famous neural nets included,but we plan to add more every week—surfing the leading edge of what's being developed in the neural net research community,as well as adding some ideas of our own.

Here's a simple example ofNetModelat work:

net = NetModel[

Now apply the network to some actual data—and see it gets the right answer:

净({6 8 0})

But because the net is specified symbolically,it's easy to "go inside"and "see what it's thinking".Here's a tiny (but neat) piece of functional programming that visualizes what happens at every layer in the net—and,yes,in the end the first square lights up red to show that the output is 0:

FoldPairList[{ArrayPlot[ArrayFlatten[Partition[#1,UpTo[5]]],ColorFunction ->

More Machine Learning

Neural nets are an important method formachine learning.But one of the核心原则of the Wolfram Language is to provide highly automated functionality,independent of underlying methods.And in 11.1 there's a bunch more of this in the area of machine learning.(As it happens,much of it uses the latest deep learning neural net methods,but for users what's important is what it does,not how it does it.)

My personal favorite new machine learning function in 11.1 isFeatureSpacePlot.Give it any collection of objects,and it'll try to lay them out in an appropriate "feature space".Like here are the flags of countries in Europe:

FeatureSpacePlot[EntityValue[=countries in Europe,

What's particularly neat aboutFeatureSpacePlotis that it'll immediately use sophisticated pre-trained feature extractors for specific classes of input—like photographs,texts,etc.And there's also now aFeatureNearestfunction that's the analog ofNearest,but operates in feature space.Oh,and all the stuff withNetModeland pre-trained net models immediately flows into these functions,so it becomes trivial,说,to experiment with "meaning spaces":

FeatureSpacePlot[{NetModel["GloVe 50-Dimensional Word Vectors Trained on Wikipedia \ and Gigaword-5 Data"]]"title="FeatureSpacePlot[{"dog","ant","bear","moose","cucumber","bean","broccoli","cabbage"},FeatureExtractor -> NetModel["GloVe 50-Dimensional Word Vectors Trained on Wikipedia \ and Gigaword-5 Data"]]"width="563"height="294"class="alignnone size-full wp-image-35480"/>

Particularly withNetModel,there are all sorts of very useful few-line neural net programs that one can construct.But in 11.1 there are also some major new,more infrastructural,machine learning capabilities.Notable examples areActiveClassificationandActivePrediction—which build classifiers and predictors by actively sampling a space,learning how to do this as efficiently as possible.There will be lots of end-user applications forActiveClassificationandActivePrediction,but for us internally the most immediately interesting thing is that we can use these functions to optimize all sorts of meta-algorithms that are built into the Wolfram Language.

Audio

Version 11.0began the processof makingaudio—likeimages—something completely integrated into the Wolfram Language.Version 11.1 continues that process.For example,for desktop systems,it addsAudioCaptureto immediately capture audio from a microphone on your computer.(Yes,it's nontrivial to automatically handle out-of-core storage and processing of large audio samples,etc.) Here's an example of me saying "hello":

Play Audio
AudioCapture

You can immediately take this,and,说,make acepstrogram(yes,that's another new audio function in 11.1):

Cepstrogram[%]

Images & Visualization

Version 11.1 has quite an assortment of new features forimages and visualization.CurrentImagegot faster and better.ImageEffecthas lots of new effects added.There are new functions and options to support the latest in金宝博188投注computational photographyand金宝博188投注computational microscopy.And images got even more integrated as first-class objects—that one can for example now immediately do arithmetic with:

Sqrt[2 Wolfie Image]-EdgeDetect[Wolfie Image]

Something else with images—that I've long wanted—is the ability to take a bitmap image,andfind an approximate vector graphics representationof it:

ImageGraphics[Poke Spikey]

TextRecognizehas also become significantly stronger—in particular being able to pick out structure in text,like paragraphs and columns and the like.

Oh,and in visualization,there are things likeGeoBubbleChart,here showing the populations of the largest cities in the US:

GeoBubbleChart[EntityValue[United States[

There's lots of little (but nice) stuff too.Like support for arbitrarycalloutsinpie charts,optimized labeling of discretehistogramsand full support ofscaling functionsforPlot3D,etc.

More Data

There's always new data flowing into theWolfram Knowledgebase,and there've also been plenty of completely new things added since 11.0: 130,000+ new types offoods,250,000+atomic spectral lines,12,000+ newmountains,10,000+ new notable建筑,300+ types ofneurons,650+ newwaterfalls,200+ newexoplanets(because they've recently been discovered),and lots else (not to mention 7,000+ new spelling words).There's also,for example,much higher resolutiongeo elevation data—so now a 3D-printableMount Everestcan have much more detail:

ListPlot3D[GeoElevationData[GeoDisk[Mount Everest]],Mesh -> None]

Integrated External Services

Something new in Version 11.1 are integrated external services—that allow built-in functions that work by calling external APIs.Two examples areWebSearchandWebImageSearch.Here are thumbnail images found by searching the web for "colorful birds":

WebImageSearch[

For the heck of it,let's see whatImageIdentifythinks they are (oh,and in 11.1.ImageIdentifyis much more accurate,and you can even play with the network inside it by usingNetModel):

ImageIdentify /@ %

SinceWebSearchandWebImageSearchuseexternal APIs,users need to pay for them separately.But we've set up what we callService Creditsto make this seamless.(Everything's in the language,of course,so there's for example$ServiceCreditsAvailable.)

There will be quite a few more examples of integrated services in future versions,but in 11.1,除了网络搜索,there's alsoTextTranslation.WordTranslation(new in 11.0) handles individual word translation for hundreds of languages;now in 11.1TextTranslationuses external services to also translate complete pieces of text between several tens of languages:

TextTranslation[

More Math,More Algorithms

A significant part of our R&D organization is devoted to continuing our three-decade effort topush the frontiers of mathematical and algorithmic computation.So it should come as no surprise that Version 11.1 has all sorts of advances in these areas.There'sspace-filling curves,fractal meshes,ways toequidistribute points on a sphere:

Graphics[HilbertCurve[5]] MengerMesh[3,3] Graphics3D[Sphere[SpherePoints[200],0.1]]

There are new kinds ofspatial,robustandmultivariate statistics.There areHankel transforms,built-inmodular inverses,and more.Even indifferentiation,there's something new:nthorder derivatives,for symbolicn:

D[x Exp[x],{x,n}]

Here's something else about differentiation: there are now functionsRealAbsandRealSignthat are versions ofAbsandSignthat are defined only by the real axis,and so can freely be differentiated,without having to give any assumptions about variables.

In Version 10.1,we introduced the functionAnglePath,that computes a path from successive segments with specified lengths and angles.At some level,AnglePathis like an industrial-scale version of Logo (or Scratch) "turtle geometry".ButAnglePathhas turned out to be surprisingly broadly useful,so for Version 11.1,we've generalized it toAnglePath3D(and,yes,there are all sorts of subtleties about frames andEuler anglesand so on).

A Language of Granular Dates

When we say "June 23,1988",what do we mean?The beginning of that day?The whole 24-hour period from midnight to midnight?Or what?In Version 11.1 we've introduced the notion ofgranularity for dates—so you can say whether a date is supposed to represent a day,a year,a second,a week starting Sunday—or for that matter just an instant in time.

It's a nice application of the symbolic character of the Wolfram Language—and it solves all sorts of problems in dealing with dates and times.In a way,it's a little like precision for numbers,but it's really its own thing.Here for example is how we now represent "the current week":

CurrentDate[

Here's the current decade:

CurrentDate[

This is the next month from now:

NextDate[

This says we want to start from next month,then add 7 weeks—getting another month:

NextDate[

And here's the result to the granularity of a month:

CurrentDate[%,

Talking of dates,by the way,one of the things that's coming across the system is the use ofDatedas a qualifier,for example for properties of entities of the knowledgebase (so this asks for the population of New York City in 1970):

New York City [ Dated[

Language Tweaks

I'm very proud of how smooth the Wolfram Language is to use—and part of how that's been achieved is that for 30 years we've been continually polishing it.We're always making sure everything fits perfectly together—and we're always adding little conveniences.

One of our principles is that if there's a lump of 金宝博188投注computational work that people repeatedly do,then so long as there's a good name for it (that people will readily remember,and readily recognize when they see it in a piece of code),it should be inserted as a built-in function.A very simple example in Version 11.1 isReverseSort:

ReverseSort[{1,2,3,4}]

(One might think: what's the point of this—it's justReverse[Sort[...]].But it's very common to want to map what's nowReverseSortover a bunch of objects,and it's smoother to be able to sayReverseSort/@ ...而不是Reverse[Sort[#]]& /@ ...orReverse@*Sort/@ ...).

Another little convenience:Nearestnow has special ways to specify useful things to return.For example,this gives the distances from 2.7 to the 5 nearest values:

Nearest[{1,2,3,4,5,6,7} ->

CellularAutomatonis a very broad function.Version 11.1 makes it easier to use for common cases by allowing rules to be specified by associations with labeled elements:

ArrayPlot[  CellularAutomaton[<|110,"Dimension"-> 2,"Neighborhood"-> 5|>,{{{1}},0},{{{50}}}]]"title="ArrayPlot[ CellularAutomaton[<|"OuterTotalisticCode"-> 110,"Dimension"-> 2,"Neighborhood"-> 5|>,{{{1}},0},{{{50}}}]]"width="470"height="198"class="alignnone size-full wp-image-35688"/>

We're always trying to make sure that patterns we've established get used as broadly as possible.Like in 11.1,you can useUpToin lots of new places,like inImageSizespecifications.

We also always trying to make sure that things are as general as possible.LikeIntegerStringnow works not only with the standard representation of integers,but also with traditional ones used for different purposes around the world:

IntegerString[12345,

AndIntegerNamecan also now handle different types and languages of names:

IntegerName[12345,{

And there are lots more examples—each making the experience of using the Wolfram Language just a little bit smoother.

A Language of Persistence

If you make a definition listx=7,or$TimeZone=11,the definition will persist until you clear it,or until your session is over.But what if you want a definition that persists longer—say across all your sessions?Well,in Version 11.1 that's now possible,thanks toPersistentValue.

PersistentValuelets you specify a name (like"foo"),and a"persistence location".(It also allows options likePersistenceTimeandExpirationDate.) The persistence location can just be"KernelSession"—which means that the value lasts only for a single kernel session.But it can also be"FrontEndSession",or"Local"(meaning that it should be the same whenever you use the same computer),or"Cloud"(meaning that it's globally synchronized across the cloud).

PersistentValueis pretty general.It lets you have values in different places (like differentprivate clouds,for example);then there's a$PersistencePaththat defines the order to look at them in,and aMergingFunctionthat specifies how (if at all) the values should be merged.

Systems-Level Programming

One of the goals of the Wolfram Language is to be able to interact as broadly as possible with all 金宝博188投注computational ecosystems.Version 11.1 adds support for the M4A audio format,the .ubj binary JSON format,as well as .ini files and Java .properties files.There's also a new function,BinarySerialize,that converts any Wolfram Language expression into a new binary ("WXF") form,optimized for speed or size:

BinarySerialize[RandomGraph[{50,100}]]

BinaryDeserializegets it back:

BinaryDeserialize[%]

Version 11.0 introducedWolframScript—a command-line interface to the Wolfram Language,running either locally or in the cloud.WithWolframScriptyou can create standalone Wolfram Language programs that run from the shell.There are several enhancements toWolframScriptitself in 11.1,but there's also now a newNew>Scriptmenu item that gives you a notebook interface for creating .wls (="Wolfram Language Script") files to be run byWolframScript:

WolframScript

Strengthening the Infrastructure

One of the major ways the Wolfram Language has advanced in recent times has been in its deployability.We've put a huge amount of work into making sure that the Wolfram Language can be robustly deployed at scale (and there are now lots of examples of successes out in the world).

We make updates to the Wolfram Cloud very frequently (and invisibly),steadily enhancing server performance and user interface capabilities.Along with Version 11.1 we've made some major updates.There are a few signs of this in the language.

Like there's now an optionAutoCopythat can be set for any cloud object—and that means that every time the object is accessed,one should get a fresh copy of it.This is very useful if,for example,you want to have a notebook that lots of people can separately modify.("Explore these ideas;here's a notebook to start from…",etc.)

CloudDeploy[APIFunction[...]]makes it extremely easy to deploy web APIs.In Version 11.1 there are some options to automate aspects of how those APIs behave.For example,there'sAllowedCloudExtraParameters,which lets you say that APIs can have parameters like"_timeout"or"_geolocation"automated.There's alsoAllowedCloudParameterExtensions(no,it's not the longest name in the system;that honor currently goes toMultivariateHypergeometricDistribution).WhatAllowedCloudParameterExtensionsdoes is to let you say not justx=value,butx__url=...,orx__json=....

Another thing about Version 11.1 is that it's got various features added to support private instances of the Wolfram Cloud—and our major newWolfram Enterprise Private Cloudproduct (with a first version released late last year).For example,in addition to$WolframIDfor the Wolfram Cloud,there's also$CloudUserIDthat's generalized to allow authentication on private clouds.And inside the system,there are all sorts of new capabilities associated with "multicloud authentication"and so on.(Yes,it's a complicated area—but the symbolic character of the Wolfram Language lets one handle it rather beautifully.)

And There's More

OK,so I've summarized some of what's in 11.1.There's a lot more I could say.New functions,and new capabilities—each of which is going to be exciting to somebody.But to me it's actually pretty amazing that I can write this long a post about a .1 release!It's a great testament to the strength of the R&D pipeline—and to how much can be done with the framework we've built in the Wolfram Language over the past 30 years.

We always work on a portfolio of projects—from small ones that get delivered very quickly,to ones that may take a decade or more to mature.Version 11.1 has the results of several multi-year projects (e.g.in machine learning,金宝博188投注computational geometry,etc.),and a great many shorter projects.It's exciting for us to be able to deliver the fruits of our efforts,and I look forward to hearing what people do with Version 11.1—and to seeing successive versions continue to be developed and delivered.


To comment,please visit the copy of this post at theWolfram Blog »

© 金宝博188正网Stephen Wolfram,LLC | Terms| RSS