What is the difference between ItemList and Dataset?

Obviously ItemList has lots of additional functionality. But is it basically representing the same thing as a Dataset? Why doesn’t it just inherit from Dataset?

It’s not a Dataset since it only has the inputs or the targets. The basic idea of the data block API is that you can mix any kind of inputs in an ItemList with any kind of targets in another ItemList.

A dataset is just an abstract class with getitem and len. Doesn’t that already return any kind of inputs mixed with any kind of targets? And once you call .label doesn’t the itemlist then include both inputs and targets?