首页 > 解决方案 > 在我的自定义构建模型上出现“InvalidArgumentError:所需的可广播形状”错误

问题描述

我已经定义了我的模型,它接受三个输入,如下所示:

def build_model(nstepsA=12,nstepsB=12,LSTM_units = 200):
'''
   nstepsA: timesteps for blockA (default=2)
   nstepsB: timesteps for blockB (default=4)
   LSTM_units: LSTM hidden units 
   
'''


  model  =  Sequential()
  BlockA = Input(shape=(nstepsA, 2), name='BlockA')
  
  BlockB = Input(shape=(nstepsB, 2), name='BlockB')
  
  model1 = LSTM(LSTM_units, name='lstm1')(BlockA)
  model2 = LSTM(LSTM_units, name='lstm2')(BlockB)
  concat = concatenate([model1, model2],axis=1)
  input_3 = Input(shape=(1 ), name='additional_inputs')
  concat2 = concatenate([concat, input_3])
  output = Dense(1, activation='tanh', name='dense')(concat2)      
  ada_grad = Adagrad(lr=0.1, epsilon=1e-08, decay=0.0)
  model.compile(optimizer=ada_grad, loss='mean_absolute_error', 
               metrics=['mean_absolute_error','mean_squared_error'],)

  fin = Model(inputs=[BlockA,BlockB,input_3],outputs = output)
  print(fin.summary())

return model

生成的模型摘要如下所示:

模型摘要

此处提供了数据输入形状:

A.shape = (12200,12,2)
B.shape = (12200,12,2)
Y1.shape = (12200,1)
Y2.shape = (12200,1)

我尝试使用以下代码拟合给定模型:

model = build_model()
model.fit([A,B,Y1],Y2)

运行它会给我以下错误:

InvalidArgumentError:需要可广播的形状

[[node SquaredDifference(定义于 tmp/ipykernel_36/1888426695.py:1)]] [Op:__inference_train_function_1662]

标签: pythondeep-learningconcatenationlstmtf.keras

解决方案


推荐阅读