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的静态轴的形状。