CNTK Convolution1d

时间:2017-07-13 00:17:19

标签: python convolution cntk

我正在尝试在CNTK中创建一个简单的卷积模型,如下所示

def create_model(hidden_dim, output_dim):
    nn=C.layers.Sequential([ C.layers.Embedding(shape=50,name='embedding'),
        C.layers.Convolution1D((40,),num_filters=5, activation=C.ops.relu),
        C.layers.GlobalMaxPooling(),
        C.layers.Dense(shape=40, activation=C.ops.tanh, init_bias=0.1), 
        C.layers.Dense(shape=2, activation=None, init_bias=0.1)
        ])
    return nn

但我继续收到以下错误 ValueError:卷积映射张量必须具有等级1或与输入张量相同。

1 个答案:

答案 0 :(得分:2)

我能够通过将reduction_rank = 0作为参数添加到Convolution1d图层来解决此问题。

def create_model(hidden_dim, output_dim):
nn=C.layers.Sequential([ C.layers.Embedding(shape=50,name='embedding', **reduction_rank=0**),
    C.layers.Convolution1D((40,),num_filters=5, activation=C.ops.relu),
    C.layers.GlobalMaxPooling(),
    C.layers.Dense(shape=40, activation=C.ops.tanh, init_bias=0.1), 
    C.layers.Dense(shape=2, activation=None, init_bias=0.1)
    ])
return nn

CNTK Layers Documentation

引用

reduction_rank(int,默认为1) - 如果输入项是标量(输入没有深度轴),则设置为0,例如音频信号或以张量形状(H,W)代替(1,H,W)存储的黑白图像

我期待CNTK能够自动推断出这件事