私はテンソルw/shape(28,397,256)を出力するconvネットを持っています。私は時間次元である397軸の順序を保ちながらテンソル(28 * 256,397)を作成するためにそれを再構成したいと思います。再構成したら、モデルの別のレイヤーにそれを供給したいと思います。ケラスでテンソルを再構築する最良の方法は何ですか
Kerasの変形層では、順序が保持されませんでした。私はconvネットの出力テンソルを取り、手動でそれを新しいものにスプライスすることができると思っていましたが、テンソルをモデルの次の層に「入力」する方法はわかりません。助けていただければ幸いです。
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)
私はそれを行うことができますが、再構成されたテンソルをモデルレイヤーにどのように統合するのですか?私が使用して変形を達成することができる: スプリット= tf.split(conv_output.output、M、軸= 3) 整形= tf.squeeze(tf.concat(スプリット、軸= 1)、軸= -1) conv_output.outputは、再構成が必要な出力テンソルです。しかし、それを次のレイヤーへの入力としてどのように指定しますか?私はテンソルフローのすべてをこの問題を避けるために書き換えることができたと思うが、理想的にはケラスを使いたい。 –
Kerasからtf関数を呼び出すことができる。 'keras import backend from K'と' K.concat(...) ' –
解決済み - カスタムケラス層を作成し、バックエンド操作を使用しました。 –