In Wk04 Lab01: we have plotted model build using functional API. The issue arises when the model build using subclass WideAndDeepModel is plotted or trained: the reference code is as follows:
class WideAndDeepModel(Model):
def init(self, units=30, activation= ‘relu’, **kwargs):
super().init(**kwargs)
self.hidden_1 = Dense(units=30, activation= activation)
self.hidden_2 = Dense(units=30, activation= activation)
self.main_output = Dense(1)
self.aux_output = Dense(1)def call(self, inputs):
input_a, input_b = inputs
hidden_1 = self.hidden_1(input_b)
hidden_2 = self.hidden_2(hidden_1)
concat = concatenate(input_a, hidden_2)
main_output = self.main_output(concat)
aux_output = self.aux_output(hidden_2)return main_output, aux_output
x1 = np.array([-1,0,1,2,3])
x2 = np.array([3,2,1,0,-1])
xs =
xs.append(x1)
xs.append(x2)
y = np.array([2,2,0,-2,-4])
model = WideAndDeepModel()
model.compile(optimizer= ‘adam’, loss= ‘mse’)
model.fit([xs[0],xs[1]], y, epochs= 500, verbose = 0)
error:
ValueError Traceback (most recent call last)
in ()
28 model = WideAndDeepModel()
29 model.compile(optimizer= ‘adam’, loss= ‘mse’)
—> 30 model.fit([xs[0],xs[1]], y, epochs= 500, verbose = 0)
31 model.summary()
32 #plot_model(model, show_layer_names= True, show_shapes= True)1 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in autograph_handler(*args, **kwargs)
1127 except Exception as e: # pylint:disable=broad-except
1128 if hasattr(e, “ag_error_metadata”):
→ 1129 raise e.ag_error_metadata.to_exception(e)
1130 else:
1131 raiseValueError: in user code:
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 878, in train_function * return step_function(self, iterator) File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 867, in step_function ** outputs = model.distribute_strategy.run(run_step, args=(data,)) File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 860, in run_step ** outputs = model.train_step(data) File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 808, in train_step y_pred = self(x, training=True) File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 67, in error_handler raise e.with_traceback(filtered_tb) from None ValueError: Exception encountered when calling layer "wide_and_deep_model_19" (type WideAndDeepModel). in user code: File "<ipython-input-33-9a5a7dab557a>", line 14, in call * hidden_1 = self.hidden_1(input_b) File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 67, in error_handler **
my guess is: the way to introduce multiple inputs is different for subclasses? kindly guide.