我正在構建一個模型,該模型沿第一個非批處理軸對資料應用隨機洗牌,應用一系列 Conv1D,然后應用洗牌的逆。不幸的是,該tf.gather層弄亂了批次維度None,我不知道為什么。
下面是發生的情況的示例。
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
dim = 90
input_img = keras.Input(shape=(dim, 4))
# Get random shuffle order
order = layers.Lambda(lambda x: tf.random.shuffle(tf.range(x)))(dim)
# Apply shuffle
tensor = layers.Lambda(lambda x: tf.gather(x[0], tf.cast(x[1], tf.int32), axis=1,))(input_img, order)
model = keras.models.Model(
inputs=[input_img],
outputs=tensor,
)
總結如下:
Model: "model"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) [(None, 90, 4)] 0
_________________________________________________________________
lambda_51 (Lambda) (90, 90, 4) 0
=================================================================
Total params: 0
Trainable params: 0
Non-trainable params: 0
_________________________________________________________________
而我希望的輸出形狀lambda_51是(None, 90, 4).
uj5u.com熱心網友回復:
嘗試包input_img和order成一個串列,當你把它們傳遞給tensor層。
這樣tensor圖層就變成了:
tensor = layers.Lambda(lambda x: tf.gather(x[0], tf.cast(x[1], tf.int32), axis=1,))([input_img, order])
和你的總結:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_2 (InputLayer) [(None, 90, 4)] 0
_________________________________________________________________
lambda_3 (Lambda) (None, 90, 4) 0
=================================================================
Total params: 0
Trainable params: 0
Non-trainable params: 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/350061.html
標籤:Python 张量流 凯拉斯 张量流2.0 keras
上一篇:ValueError:檢查輸入時出錯:預期dense_input有2維,但得到形狀為(1,1,2)的陣列
下一篇:在android(Java8)上運行TensorFlowLite時出現java.lang.NoSuchMethodError
