我想在張量流中使用 fft2d 變換,然后用卷積層分析幅度和相位結果......我已經制作了一個帶有 Lambda 層的系統來使用張量流函數并獲得幅度和相位。但是當我添加 Conv2d 層時,我得到了錯誤Depth of input (3) is not a multiple of input depth of filter (199) for '1_Magn_Conv_f500_k2_2/convolution' (op: 'Conv2D') with input shapes: [?,199,199,3], [2,2,199,500]我不明白是什么shape [2,2,199,500]以及導致此錯誤的原因。我試圖減少網絡中的層數,以檢測是哪一層造成了問題。我檢查了 magn_angle 輸出兩個張量shapes [None,199,199,3]。我正在與谷歌 colab 合作。這是重現錯誤的最少代碼inpt = Input(shape = (199, 199, 3),name=str(0)+'_'+'Image')def magn_angle(x): x = Lambda(lambda x:K.cast(x,dtype=tf.complex64))(x) x_list_magn = [] x_list_angle = [] for i in range(3): fft = Lambda(lambda x: tf.fft2d(x[:,:,:,i]), output_shape=(None,199,199))(x)# 2-dimensional discrete Fourier transform over the inner-most 2 dimensions x_list_magn.append(Lambda(lambda fft:K.expand_dims(tf.math.abs(fft),axis=-1), output_shape=(None,199,199))(fft)) x_list_angle.append(Lambda(lambda fft: K.expand_dims(tf.math.angle(fft),axis=-1), output_shape=(None,199,199))(fft)) magn = Concatenate()(x_list_magn) angle = Concatenate()(x_list_angle) magn = Lambda(lambda magn: K.cast(magn,dtype=tf.float32), output_shape=(None,199,199))(magn) angle = Lambda(lambda angle: K.cast(angle,dtype=tf.float32), output_shape=(None,199,199))(angle) return magn,anglemagn, angle = magn_angle(inpt)magn = Conv2D(filters=500,kernel_size=(2,2),activation=None,strides=(1,1),padding='SAME',name=str(1)+'_'+'Magn_Conv_f500_k2',data_format="channels_last")(magn)...哪個輸出InvalidArgumentError: Depth of input (3) is not a multiple of input depth of filter (199) for '1_Magn_Conv_f500_k2_3/convolution' (op: 'Conv2D') with input shapes: [?,199,199,3], [2,2,199,500].
1 回答

動漫人物
TA貢獻1815條經驗 獲得超10個贊
我使用 tf.keras 在 colab 筆記本中運行您的代碼而沒有錯誤 - 可能是版本不匹配 – Colin Torney
keras. ...
將導入更改為tensorflow.keras. ...
已解決問題。
添加回答
舉報
0/150
提交
取消