本文,构造16个神经网络,并用这16个神经网络,绘制16幅图片。

其实,主要目的,是继续入门神经网络。

工具/原料

  • 电脑
  • Mathematica

方法/步骤

  1. 1

    建立一个神经网络:

    a = NetChain[{30, Sin, 3, Tanh, 3, Cos}, "Input" -> 2];

    这个神经网络的作用是:

    接收一个2元向量v、

    自动延展为30元的向量v0、

    Sin作用于v0的每一个元素,得到新的向量v1、

    把v1变成3元向量v2、

    Tanh作用于v2的所有元素,得到v3、

    Cos作用于v3、

    输出v4。

  2. 2

    用上面的神经网络a,复制出16个随机的神经网络,并初始化:

    as = Table[ NetInitialize[a,

          Method->{"Random","Weights"->3,"Biases"->2}], 16];

  3. 3

    给出若干个二元向量的集合:

    m= Range[0, 20, 0.04]

    n = Tuples[m, 2]

    可以看到,n是若干二元向量的集合。

  4. 4

    用as里面的第一个神经网络作用于n,可以得到一个三元向量的集合:

    as[[1]][n]

  5. 5

    对上面的数据进行以下操作,可以转化为500*360的彩色图像的数据:

    Partition[as[[1]][n],500]

    下图是放大2倍的效果。

  6. 6

    运行一次,就会得到不同的图片。

    Partition[as[[1]][n],500]

  7. 7

    如果把m改一下:

    m= Range[0, 2, 0.004];n = Tuples[m, 2];

    那么,Partition[as[[1]][n],500]//Image也变了。

  8. 8

    用as里面的前4个神经网络来处理数据n,得到的图片如下:

    四幅图片,而且运行一次,就会发现变化。

    END

注意事项

  • 注意,步骤一里面的神经网络还没有初始化,所以还不能使用。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。