cntk深度网络——从入门到转行一

cntk深度网络——从入门到转行一

开始

关于cntk的编译和安装,请参见相关文档。此文档用于cntk 2.0版的python。用于c++接口的有需求再整理资料。

如果你还没安装Cntk的运行环境工具包,那么可以先择使用预选安装cntk运行在Azure Notebook的托管环境。

如果你在你的机器上安装了cntk,在完成安装后你可以立即从Python 开始使用cntk(不要忘记激活你的python环境)。

  >>> import cntk
    >>> cntk.__version__
    '2.0rc2+'

    >>> cntk.minus([1, 2, 3], [4, 5, 6]).eval()
    array([-3., -3., -3.], dtype=float32)

以上代码使用了带有两个数组常量的cntk节点。每个操作符都有一个eval()方法,该方法可以调用,该方法使用它的输入为该节点运行向前传递,并返回向前传递的结果。使用输入变量。更常见的例子是这样的:

  >>> import numpy as np
    >>> x = cntk.input_variable(2)
    >>> y = cntk.input_variable(2)
    >>> x0 = np.asarray([[2., 1.]], dtype=np.float32)
    >>> y0 = np.asarray([[4., 6.]], dtype=np.float32)
    >>> cntk.squared_error(x, y).eval({x:x0, y:y0})
    array([ 29.], dtype=float32)

在上面的例子中,我们首先设置了两个带有形状(1、2)的输入变量,然后我们设置了一个带有这两个变量作为输入的squarederror节点。在eval()方法中,我们可以为这两个变量设置数据的输入映射。在本例中,我们传入两个numpy数组。平方误差当然是(2-4)2+(1-6)2=29。

大多数的数据容器,比如参数、常量、值等等,都实现了asarray()方法,该方法返回一个NumPy接口。

>>> import cntk as C
    >>> c = C.constant(3, shape=(2,3))
    >>> c.asarray()
    array([[ 3.,  3.,  3.],
           [ 3.,  3.,  3.]], dtype=float32)
    >>> np.ones_like(c.asarray())
    array([[ 1.,  1.,  1.],
           [ 1.,  1.,  1.]], dtype=float32)

对于具有序列轴的值,asarray()不能工作,它要求形状是矩形的,并且大多数时间的序列都有不同的长度。在这种情况下,as序列(var)返回一个NumPy数组列表,其中每个NumPy数组都具有var的静态轴的形状。

发布了18 篇原创文章 · 获赞 31 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/alvinlyb/article/details/72835223