我有一个转换器,可以输出一个具有形状的张量(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)
答案 0 :(得分:1)
您可以使用concatenate
或tf.concat
中的np.concatenate
。在您的情况下,您想合并轴0
和轴1
,这样您就可以tf.concat(tensor, axis=0)
。
您也可以使用tf.reshape(tensor, (28*256, 397))
。请注意,尺寸前后的元素数必须相同!
希望这有帮助!