Open bebechien opened 5 months ago
cc: @mattdangerw
This is a semantic issue.
AttributeError
is raised here because a keras.ops
(like GetItem
) doesn't have the weights
property.
In Keras, a Layer
is an Operation
, but vice versa is not true. Anyway, a Functional
model can also include raw Keras 3 ops.
Maybe, a dirty workaround could be to add the weights
property to Operation
class:
@property
def weights(self):
weights = []
return weights
IMO this solution is not semantically correct because weights for an operation don't make any sense.
Or an alternative solution could be to wrap the keras.ops
into a Lambda layer. I prefer avoiding this layer because of its limitations but maybe in this case it can be used safe.
Finally this issue should be moved in keras
repository.
Thanks @miticollo. Agreed, this should move to the keras
repo.
Could we just have models.layers
filter down to only return Layer
and not Operation
? That's what is used by the summary utils, and generally speaking I think having model.layers
return something that is not a Layer
is just unexpected.
Not sure if anything would break, but we could try it out. @miticollo are you interested in taking it on?
Thank u for the answer! At the moment I'm a bit busy with the latest exams at University (one is on Deep Learning). So I can't do it.
Anyway using a filter it could be a good a idea. But currently summary
shows also the keras.ops
. So is this behaviour still intended?
@miticollo good point. Perhaps?
Still rubs me the wrong way that model.layers
would return something that is not a layer. Users should be able to confidently call any layer method (e.g. layer.count_params()
) on everything inside model.layers
in a loop. Though potentially we should also have model summary plot ops as well as layers, in which case we should not sure model.layers
to loop through everything.
For now I will open a bug in core Keras, assign to myself, and mark open for contributions.
Hi @mattdangerw!
This issue can be closed. It was solved with this commit and it included into Keras 3.5.0.
Hi @bebechien,
Could you please confirm if this issue is resolved for you with the above comment ? Please feel free to close the issue if it is resolved ?
Thank you.
Describe the bug
model.summary() for PaliGemma will fail when passing
show_trainable=True
\ Works fine without the parameter.\ Below is an actual error message.To Reproduce https://colab.research.google.com/drive/1o04v1Xok9892KC-TUOuYh8ToU2wY8RPY?usp=sharing
Expected behavior Display the model summary with Trainable info.
Additional context N/A
Would you like to help us fix it? Sure