2
如何在Keras中实现“一对多”和“多对多”序列预测?
我很难解释一对一(例如,单个图像的分类)和多对多(例如,图像序列的分类)序列标签的Keras编码差异。我经常看到两种不同的代码: 类型1是没有应用TimeDistributed的地方,如下所示: model=Sequential() model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode="valid", input_shape=[1, 56,14])) model.add(Activation("relu")) model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1])) model.add(Activation("relu")) model.add(MaxPooling2D(pool_size=pool_size)) model.add(Reshape((56*14,))) model.add(Dropout(0.25)) model.add(LSTM(5)) model.add(Dense(50)) model.add(Dense(nb_classes)) model.add(Activation("softmax")) 类型2是应用TimeDistributed的地方,如下所示: model = Sequential() model.add(InputLayer(input_shape=(5, 224, 224, 3))) model.add(TimeDistributed(Convolution2D(64, (3, 3)))) model.add(TimeDistributed(MaxPooling2D((2,2), strides=(2,2)))) model.add(LSTM(10)) model.add(Dense(3)) 我的问题是: 我的假设是正确的,类型1是一对多类型,类型2是多对多类型吗?还是TimeDistributed在这方面没有关联? 在一对多或多对多的情况下,最后一个密集层应为1个节点“长”(依次仅发出一个值), 而先前的循环层负责确定有多少个 1长发射的价值?或者最后一个密集层应该由N个节点组成,其中N=max sequence length?如果是这样, 当我们可以 使用N个并行“原始”估计量产生具有多个输出的相似输入时,在这里使用RNN 有什么意义? 如何定义RNN中的时间步数?它是某种程度上 与输出序列长度相关,还是只是 需要调整的超参数? 上面我的Type …