我正在使用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时出现的同一问题,各种答案中都提出了这一点。
如果我是对的,
如果我的理解是错误的,那么应该怎么做呢?
输入层产生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的局部感受野的输入层