嵌入式linux CNN,CNN嵌入式层的实现

嗨,我一直在尝试遵循以下两个示例:

但是,对于示例1,我一直遇到以下错误

Input 0 of layer conv2d_1 is incompatible with the layer: expected ndim=4, found ndim=3. Full shape received: [None, 100, 20]

以及以下错误示例2。

ValueError: Layer conv2d_1 expects 1 inputs, but it received 100 input tensors. Inputs received: [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]

我已经更改了代码,而不是使用word_list = tf.unstack(word_vectors, axis=1),我已更改为以下实现来解决错误,但是我不知道实现是否正确。

word_vectors = tf.contrib.layers.embed_sequence(

x, vocab_size=n_words, embed_dim=EMBEDDING_SIZE)

word_list = tf.reshape( word_vectors, [-1, MAX_DOCUMENT_LENGTH, EMBEDDING_SIZE, 1])

conv1, pool1 = cnn(word_list, FILTER_SHAPE1, 'CNN_Layer1')

函数cnn和其他参数已定义

MAX_DOCUMENT_LENGTH = 100

N_FILTERS = 10

FILTER_SHAPE1 = [20, 20]

POOLING_WINDOW = 4

POOLING_STRIDE = 2

MAX_LABEL = 15

EMBEDDING_SIZE = 20

def cnn(x, filter_shape, name):

with tf.variable_scope(name):

conv1 = tf.layers.conv2d(

x,

filters=N_FILTERS,

kernel_size=filter_shape,

padding='VALID',

activation=tf.nn.relu)

pool1 = tf.layers.max_pooling2d(

conv1,

pool_size=POOLING_WINDOW,

strides=POOLING_STRIDE,

padding='SAME')

return conv1, pool1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值