在keras中重塑张量的最佳方法是什么

时间:2017-07-15 03:07:23

标签: tensorflow keras reshape

我有一个转换器,可以输出一个具有形状的张量(28,397,256)。我想重组它以创建张量(28 * 256,397),同时保留397轴的顺序,这是一个时间维度。重新整形后,我想将其提供给模型中的另一个图层。

Keras的Reshape图层没有保留订单。我以为我可以采用转换网的输出张量并手动将其拼接成一个新的,但我不知道如何输入"张量回到模型的下一层。帮助将不胜感激,我是keras的新手。

这是我最初尝试过的事情:

conv = Conv2D(hidden_units, kernel_size, strides=(1,1), activation=conv_activation)
model.add(conv)
conv_output = MaxPooling2D(pool_size=pool_kernel)
model.add(conv_output)

### STACKING ###
shape = conv_output.output.shape
F_prime = shape[1].value
T = shape[2].value
M = shape[3].value

reshaped = core.Reshape((T, F_prime*M), input_shape=shape[1:])
model.add(reshaped)

recurr = LSTM(hidden_units, return_sequences=True, activation=recurr_activation, recurrent_activation='hard_sigmoid', dropout=0.3, recurrent_dropout=0.0)
model.add(recurr)

1 个答案:

答案 0 :(得分:1)

您可以使用concatenatetf.concat中的np.concatenate。在您的情况下,您想合并轴0和轴1,这样您就可以tf.concat(tensor, axis=0)

您也可以使用tf.reshape(tensor, (28*256, 397))。请注意,尺寸前后的元素数必须相同!

希望这有帮助!