当前位置: 首页 > 知识库问答 >
问题:

当需要三维输入(张量)时,使用keras 1D卷积层在R(Rstudio)中设置NLP任务的输入形状

公羊安怡
2023-03-14

我正在使用R编程语言和KerasAPI构建一个功能性的1D CNN。

我有一个包含以下形状行*特征(6000*1024)的数据集矩阵。

使用以下代码设置输入层:

input_layer = layer_input(shape = 1024, batch_shape = c(nrow(train_matrix),1024), dtype = 'float64') 

然后我正在构建一个1d conv层,如下所示:

conv1 = input_layer %>% layer_conv_1d(filters = 32, kernel_size = 50, strides = 10, input_shape = 1024, batch_input_shape = list(NULL, 1024) ,dtype = 'float64', activation = 'relu' )

但我得到以下错误:

py\u call\u impl(可调用,dots$参数,dots$关键字)中出错:值错误:输入0与层conv1d不兼容:预期ndim=3,发现ndim=2

我认为这是因为1D cnn层期望以下形式的输入

输入形状:带形状的三维张量:(batch\u size,steps,Input\u dim)

我知道我必须将我的数据重塑为(NULL,nrow(train\u matrix),1);对于在Python中使用keras时出现的同一问题,各种答案中都提出了这一点。

如果我是对的,

  1. 我应该向输入层提供哪些值
  2. 我该如何重塑我的训练数据?
  3. 这是否意味着我也必须重塑测试数据?

如果我的理解是错误的,那么应该怎么做呢?

共有1个答案

公孙盛
2023-03-14

输入层产生2d张量,而1d卷积层期望3d张量作为输入。这个答案很好地解释了为什么keras会这样做,以及您应该如何将2d输入重塑为3d。

我使用Keras R API函数k_reshape(2d_tensor,(list_of_new_dims))--

nrow(train_matrix)-我的矩阵中的总行数(没有样本)

num_of_feature_vectors-矩阵中的列总数(特征总数)

我想要一个z轴上只有1个元素的3d张量,因此z轴被初始化为1

 类似资料:
  • 我在使用Keras和Python对3D形状进行分类时遇到了一个问题。我有一个文件夹,里面有一些JSON格式的模型。我将这些模型读入Numpy数组。模型是25*25*25,表示体素化模型的占用网格(每个位置表示位置(i、j、k)中的体素是否有点),因此我只有1个输入通道,就像2D图像中的灰度图像一样。我拥有的代码如下: 在此之后,我得到以下错误 使用TensorFlow后端。回溯(最后一次调用):文

  • 问题是卷积神经网络的数学细节。假设网络的体系结构(其目标是图像分类)是这样的 输入图像32x32 第一个隐藏层3x28x28(由3个大小为5x5的滤波器卷积而成,步幅=0,无填充),随后是激活 池化层(在2x2区域上池化),产生3x14x14输出 第二隐藏层6x10x10(由6个大小为5x5的滤波器卷积而成,步幅=0,无填充),随后激活 池化层(在2x2区域上池化),产生6x5x5输出 具有100

  • 我在Keras建立了一个卷积神经网络。 根据CS231讲座,卷积操作为每个过滤器创建一个特征映射(即激活映射),然后将其堆叠在一起。在我的例子中,卷积层有一个300维的输入。因此,我预计会进行以下计算: 每个过滤器的窗口大小为5。因此,每个滤波器产生300-5 1=296个卷积 但是,实际输出形状看起来不同: 偏移值的形状很有意义,因为每个过滤器都有一个偏移值。然而,我不了解重量的形状。显然,第一

  • 我正在尝试创建一维卷积模型,但我似乎无法获得正确的输入形状。以下是我所拥有的: 我收到以下错误: 有人有什么建议吗?

  • 根据tf.keras.layers.Conv3D的官方留档 如果data\u format='channels\u first',带形状的5 D张量:batch\u shape(通道,conv\u dim1,conv\u dim2,conv\u dim3),如果data\u format='channels\u last',带形状的5 D张量:batch\u shape(通道,conv\u dim

  • 真的很难理解keras中卷积1d层的输入维度: 输入形状 带形状的三维张量:(采样、步长、input\u dim)。 输出形状 带形状的三维张量:(采样、新的\u步骤、nb\u过滤器)。由于填充,步骤值可能已更改。 我希望我的网络接受价格的时间序列(101,按顺序)并输出4个概率。我当前的非卷积网络做得相当好(训练集为28000)如下所示: 为了改进这一点,我想从具有长度为10的局部感受野的输入层