-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Plot multiple 2D images as cards in the same tag #7725
base: dev
Are you sure you want to change the base?
Conversation
Signed-off-by: Matthew Vine <32849887+MattTheCuber@users.noreply.github.com>
Hi @MattTheCuber, taking a look |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's add a flag to control this behaviour. I'm also having a look at the tests to see if there are tests for this function that need augmenting
@@ -192,7 +192,7 @@ def plot_2d_or_3d_image( | |||
dataformats = "HW" | |||
for j, d2 in enumerate(d[:max_channels]): | |||
d2 = rescale_array(d2, 0, 1) | |||
writer.add_image(f"{tag}_{dataformats}_{j}", d2, step, dataformats=dataformats) | |||
writer.add_image(f"{tag}_{dataformats}/{j}", d2, step, dataformats=dataformats) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In order to preserve existing behaviour for users, this change should be controlled by a flag passed in as an argument to plot_2d_or_3d_image
. with the default being the existing behaviour.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The current behavior is inconsistent between different image types. Currently, multiple 3D images are plotted in the same tag while multiple 2D images are plotted in different tags. I would think consistency would be preferred over preserving the current behavior? Also, the flag should probably control all image sizes and not just 2D?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @MattTheCuber,
I agree that it is a little inconsistent in its current form, but preserving current behaviour is always preferred and we always like to warn users in advance if default behaviour is changing. If we were to change it without giving users the ability to control the behaviour it makes comparisons between runs done before and after the change very hard.
We would instead do the following:
- introduce the flag to switch between current behaviour and the suggested change
- schedule a change to the default setting for that flag for a future release and add suitable documentation so that users have time to change scripts if they need to do so
As for the 2d vs 3d discrepancy, I think there might be a broader question as to whether this method is sufficiently flexible and the best way of addressing it. We have a core development meeting today; I'll raise the issue and see what folks have to say, then come back to you.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @MattTheCuber, we can simply add a flag for this multi-channel 2d image plt. Thanks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@KumoLiu I was thinking that if we looked a bit more of a refactor we might want to give the caller more flexibility in how their data is displayed in tensorboard:
- 2d data
- image
- 3d data
- image ((rgb)HW)
- image with '_' tag (CHW)
- image with '/' tag (CHW)
- video (DHW) / (THW)
- animated_gif (DHW) / (THW)
- 4d data
- video (rgb(DHW)) / (rgb(THW))
- animated_gif
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree, refactoring this would be nice. As I said previously, the current behavior is quite disjoint.
Fixes #7724.
Description
This will change the
plot_2d_or_3d_image
function to plot multiple 2D images under the same tag as multiple cards rather than each image as a separate tag in TensorBoard. See #7724 for more information and examples at the bottom.This might not be the optimal way to solve this issue, let me know if you have other ideas.
Types of changes
./runtests.sh -f -u --net --coverage
../runtests.sh --quick --unittests --disttests
.make html
command in thedocs/
folder.