@KFrank already explained the culprits of using id() here. If you want to check the actual memory pointer, use .data_ptr():
id()
.data_ptr()
a[0][0].data_ptr() a[0][1].data_ptr() a[1][0].data_ptr() a[1][1].data_ptr()