使用lasagne进行一维卷积conv1d

本文介绍如何使用Lasagne和Dandelion库在Theano框架下实现一维卷积神经网络,并在时间维度上应用MaxPooling操作,通过具体代码示例展示了处理多个句子的卷积过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 具体看下面的实现,实现对多个句子进行一维卷积,并使用dandelion实现时间维度上的maxpooling。

# 学习使用lasagne 结合dandelion 进行卷积,并在时间维度上进行max pooling
import lasagne
import theano
import numpy as np
from dandelion.functional import *
def conv1d(input_length = 4,feature_size=8,num_filters = 8,filter_size=3,pad='valid',stride=1):
    x = theano.tensor.tensor3(dtype=theano.config.floatX)
    l_in = lasagne.layers.InputLayer(shape=(None,input_length,feature_size),  #(B,T,D)
                                     input_var=x)
    l_out = lasagne.layers.DimshuffleLayer(l_in, (0,2,1))#(B,D,T)
    c = lasagne.layers.Conv1DLayer(l_out, num_filters=num_filters, filter_size=filter_size, stride=stride, pad=pad)
    t = lasagne.layers.DimshuffleLayer(c, (0,2,1))       #(B,new_T,num_filters)
    y = lasagne.layers.get_output(t)
    s = lasagne.layers.get_output_shape(t)
    y = pool_1d(y, ws=s[1], mode='max', axis=-2) #(B,1,num_filters)
    return theano.function([x], [y])
v3 = np.asarray([[[1, 2,4,10, 2,4,10,10], [5, 2,4,10, 2,4,10,10],[7, 6,4,10, 2,4,10,10],[7, 2,8,10, 2,4,10,10]],
                 [[1, 2,4,10, 2,4,10,10], [5, 2,4,10, 2,4,10,10],[7, 6,4,10, 2,4,10,10],[7, 2,8,10, 2,4,10,10]],
                 [[1, 2,4,10, 2,4,10,10], [5, 2,4,10, 2,4,10,10],[7, 6,4,10, 2,4,10,10],[7, 2,8,10, 2,4,10,10]], 
                 [[4, 2,6,10, 2,4,10,10], [7, 2,4,10, 2,4,10,10],[9, 2,4,10, 2,4,10,10],[112, 2,4,10, 2,4,10,10]],
                 [[0, 3,4,10, 2,4,10,10], [2, 6,4,10, 2,4,10,10],[7, 2,7,15, 2,4,10,10],[23, 2,3,3, 2,4,10,10]]], dtype=np.float32)
v4 = np.asarray([7, 3,3,11], dtype=np.float32)
conv1d_fn = conv1d()
z = conv1d_fn(v3)
print(v3.shape)
print(z[0].shape)
print(z[0])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值