Automated Artificial Intelligence

Getting data to tag. WebImageSearch returns 10 thumbnails images as requested...
We will use it to train the classifier:
In[]:=
dog=WebImageSearch["dog"]​​cat=WebImageSearch["cat"]​​trex=WebImageSearch["t-rex"]
Out[]=
Out[]=
Out[]=
In just one line of code we can create the new classifier ANIMAL:
In[]:=
animal=Classify[<|​​"gato"->cat,​​"cão"->dog,​​"t-rex"->trex|>]
Out[]=
ClassifierFunction
Input type: Image
Classes: cão,gato,t-rex
Method: LogisticRegression
Number of training examples: 30
Data not saved. Save now

In[]:=
Information[animal]
Out[]=
Classifier information
Data type
Image
Classes
cão
,
gato
,
t-rex
Accuracy
(97.±5.)
%
Method
LogisticRegression
Single evaluation time
470.
ms/example
Batch evaluation speed
1.85
examples/s
Loss
0.0499 ± 0.073
Model memory
4.96
MB
Training examples used
30
examples
Training time
22.3
s
Test the new classifier with images that was not in the training set:
In[]:=
animal

Out[]=
t-rex
In[]:=
animal

Out[]=
cão
In[]:=
animal

Out[]=
cão
In addition we can have a overview of the images in a cluster:
In[]:=
FeatureSpacePlot[Flatten[{cat,dog,trex}]]
Out[]=

Opening The Black Box

You can download, and publish (upload) a new neural network from the repo:
https://resources.wolframcloud.com/NeuralNetRepository/
In[]:=
age=NetModel["Age Estimation VGG-16 Trained on IMDB-WIKI Data"]
Out[]=
NetChain
Input
image
array(size: 3×224×224)
conv1_1
ConvolutionLayer
array(size: 64×224×224)
relu1_1
Ramp
array(size: 64×224×224)
conv1_2
ConvolutionLayer
array(size: 64×224×224)
relu1_2
Ramp
array(size: 64×224×224)
pool1
PoolingLayer
array(size: 64×112×112)
conv2_1
ConvolutionLayer
array(size: 128×112×112)
relu2_1
Ramp
array(size: 128×112×112)
conv2_2
ConvolutionLayer
array(size: 128×112×112)
relu2_2
Ramp
array(size: 128×112×112)
pool2
PoolingLayer
array(size: 128×56×56)
conv3_1
ConvolutionLayer
array(size: 256×56×56)
relu3_1
Ramp
array(size: 256×56×56)
conv3_2
ConvolutionLayer
array(size: 256×56×56)
relu3_2
Ramp
array(size: 256×56×56)
conv3_3
ConvolutionLayer
array(size: 256×56×56)
relu3_3
Ramp
array(size: 256×56×56)
pool3
PoolingLayer
array(size: 256×28×28)
conv4_1
ConvolutionLayer
array(size: 512×28×28)
relu4_1
Ramp
array(size: 512×28×28)
conv4_2
ConvolutionLayer
array(size: 512×28×28)
relu4_2
Ramp
array(size: 512×28×28)
conv4_3
ConvolutionLayer
array(size: 512×28×28)
relu4_3
Ramp
array(size: 512×28×28)
pool4
PoolingLayer
array(size: 512×14×14)
conv5_1
ConvolutionLayer
array(size: 512×14×14)
relu5_1
Ramp
array(size: 512×14×14)
conv5_2
ConvolutionLayer
array(size: 512×14×14)
relu5_2
Ramp
array(size: 512×14×14)
conv5_3
ConvolutionLayer
array(size: 512×14×14)
relu5_3
Ramp
array(size: 512×14×14)
pool5
PoolingLayer
array(size: 512×7×7)
flatten_0
FlattenLayer
vector(size: 25088)
fc6
LinearLayer
vector(size: 4096)
relu6
Ramp
vector(size: 4096)
drop6
DropoutLayer
vector(size: 4096)
fc7
LinearLayer
vector(size: 4096)
relu7
Ramp
vector(size: 4096)
drop7
DropoutLayer
vector(size: 4096)
fc8_101
LinearLayer
vector(size: 101)
prob
SoftmaxLayer
vector(size: 101)
Output
class
Data not saved. Save now

Now we can do it again for test, with "fake" people: