我是否正确地断定在cntk中无法实现“深层梦想”?

时间:2017-12-30 10:28:58

标签: python deep-learning cntk

我想对我的一些图像数据实施深刻的梦想。我决定给cntk一个开始,然后开始使用MNIST手写数据来开发。

通常,在训练神经网络时,您有一些固定的输入图像集,并且您需要学习一些可变权重。考虑到网络中的一些固定权重,Deep dreaming翻转这些,你可以学习一个可变图像。

所以我训练了一个网络,使用卷积网络非常一致地识别图像。现在我想要它想象一些图像,所以我需要用可变输入图像进行卷积。显然cntk不允许这样做。以下代码演示了我遇到的错误。

def doConstantConv(inputX, W, b, redRank):
    kernel = C.constant(value = W)
    bias = C.constant(value = b)
    conv = C.convolution(kernel, inputX, strides = (2,2), reduction_rank = redRank) + bias
    return C.relu(conv)

W1 = np.reshape(np.arange(200.0, dtype = np.float32), (8,1,5,5))
b1 = np.reshape(np.arange(8.0, dtype = np.float32), (8,1,1))

someInput = C.parameter((1,28,28))
layer1 = doConstantConv(someInput, W1, b1, 1)

我得到的错误是“卷积当前要求主操作数具有动态轴”。但据我所知,可学习的参数不能有动态轴。这没有意义,是吗?

因此可以得出结论,cntk不能用于深度梦想吗?有没有办法破解它?

1 个答案:

答案 0 :(得分:1)

查看https://github.com/Microsoft/CNTK/blob/master/Tutorials/CNTK_205_Artistic_Style_Transfer.ipynb

您可以通过在参数中指定need_gradient = True来创建可学习的输入变量。

谢谢,
伊马德