是否可以将CNN的平坦层的输出用作RNN的输入?

阿比盖尔·莉亚·辛格

我目前正在做有关在线/动态签名验证的荣誉研究项目。我正在使用SVC 2004数据集(任务2)。我研究的目的是创建一个CRNN(卷积递归神经网络),可以识别签名是真实的还是伪造的。这是模型的代码:(我的数据预处理可以在这里找到:数据预处理代码

class crnn_model:
def __init__(self, trainX, trainy, testX, testy, optimizer_method):
   self.trainX = trainX
   self.trainy = trainy
   self.testX = testX
   self.testy = testy

   self.evaluate_model(optimizer_method)

def evaluate_model(self, optimizer_method):
    verbose, epochs, batch_size = 0, 40, 10
    n_timesteps, n_features, n_outputs = len(self.trainX), 7, 2
    model = keras.Sequential()
    model.add(keras.layers.Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=(n_timesteps, n_features), use_bias=True))
    model.add(keras.layers.Conv1D(filters=64, kernel_size=3, activation='relu'))
    model.add(keras.layers.Dropout(0.5))
    model.add(keras.layers.MaxPooling1D(pool_size=2))
    model.add(keras.layers.Flatten())
    model.add(keras.layers.LSTM(2, input_shape=[30592,1], return_sequences=True))
    model.summary()

    # Compile the model
    model.compile(optimizer=optimizer_method, loss='categorical_crossentropy', metrics=['accuracy'])

    #fit model
    model.fit(self.trainX, self.trainy, epochs=epochs, batch_size=batch_size, verbose=verbose)

    #evaluate model
    _, accuracy = model.evaluate(self.testX, self.testy, batch_size=batch_size, verbose=0)
    return accuracy

这不是我的最终代码,但是遇到以下错误:

ValueError:输入0与层lstm_1不兼容:预期ndim = 3,找到的ndim = 2

非常感谢您的时间以及有关RNN或CNN的任何提示。

纽里克

Flatten转换形状的张量(batch_size, timesteps, features)(batch_size, timesteps*features)这就是为什么你所得到的错误found ndim=2根据您要实现的目标,您可能会:

  • 删除Flatten以将卷积的学到的功能传递到LSTM中,或者
  • Reshape展平的张量可以(batch_size, timesteps*features, 1)说基本上每个时间步都是一个功能。

在这两种情况下,LSTM都希望得到张量为3的张量。但是,等等,仅仅因为您重塑并不意味着它是正确的,所以这一切都取决于您要实现的目标以及网络的信息流/计算图的外观喜欢。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否可以将JSP用作servlet的模板?

是否可以将异常用作条件?

我可以将下一层的输出用作Keras的当前层输入吗?

将输出从tensorflow dynamic_rnn馈送到后续层

CNN-将输出从Conv层重塑为密集层

是否可以将cmdlet用作动态PowerShell脚本的输入参数?

将标准输出用作awk中的输入

是否可以将矩阵作为Keras嵌入层的输入?

了解RNN的softmax输出层

RNN的输出层的渐变是否应该削减?

是否可以将模拟对象用作另一种模拟方法的输入?

平坦层的输入必须为张量

是否可以将文件源用作输入,而将jdbc-sink用作kafka的输出?

是否可以将输入用作字符串的调用?

是否可以将画布用作按钮的图标?

将图像同时用作输入附件和彩色输出附件是否合法?

是否可以将np.array()与列表一起用作输入?

在Bazel中,是否可以将函数输出用作load语句的输入?

将具有不同内核的SVM用作CNN网络的最后一层

是否可以将request.POST用作字典输入?

将softmax用作隐藏层激活函数在回归(非分类)问题中是否可以接受?

是否可以将Cassandra用作LRU缓存

Hadoop MapReduce:是否可以仅将一部分输入数据用作MR作业的输入?

MATLAB:是否可以将文件用作函数的输入?

是否可以将HashSet用作HashMap的键?

将搜索引擎用作缓存层是否合适?

是否可以将bundle show命令的输出用作cd的参数?

将 RNN 和 CNN 与千层面结合

TF/Keras 中输入和输出长度不等的 RNN 层