How can I visualization CNN filters?

wonchulSon: <p>I got first conv2d filter’s weight values like this:</p>
<pre><code class="lang-auto">params = list(model.parameters())
params[0][0] # conv1's weight
</code></pre>
<pre><code class="lang-auto">tensor([[[-0.1867,  0.0042,  0.1249],
         [-0.0697, -0.1647,  0.0485],
         [ 0.0495, -0.0616,  0.1093]],

        [[ 0.1271,  0.1147,  0.1118],
         [-0.0211,  0.0898,  0.1344],
         [ 0.0735, -0.0565,  0.1802]],

        [[ 0.0370, -0.0470,  0.0933],
         [-0.1702, -0.0986, -0.1611],
         [ 0.0910, -0.0619, -0.0874]]], device='cuda:0',
       grad_fn=&lt;SelectBackward&gt;)
</code></pre>
<p>After this, I run under code to see filter, but the error occured.<br>
How can I solve this?</p>
<pre><code class="lang-auto">plt.imshow(params[0][0])
</code></pre>
<pre><code class="lang-auto">---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
&lt;ipython-input-63-931c8ef87f84&gt; in &lt;module&gt;
----&gt; 1 plt.imshow(params[0][0])

/usr/local/lib/python3.5/dist-packages/matplotlib/pyplot.py in imshow(X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, data, **kwargs)
   2697         filternorm=filternorm, filterrad=filterrad, imlim=imlim,
   2698         resample=resample, url=url, **({"data": data} if data is not
-&gt; 2699         None else {}), **kwargs)
   2700     sci(__ret)
   2701     return __ret

/usr/local/lib/python3.5/dist-packages/matplotlib/__init__.py in inner(ax, data, *args, **kwargs)
   1808                         "the Matplotlib list!)" % (label_namer, func.__name__),
   1809                         RuntimeWarning, stacklevel=2)
-&gt; 1810             return func(ax, *args, **kwargs)
   1811 
   1812         inner.__doc__ = _add_data_doc(inner.__doc__,

/usr/local/lib/python3.5/dist-packages/matplotlib/axes/_axes.py in imshow(self, X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, **kwargs)
   5492                               resample=resample, **kwargs)
   5493 
-&gt; 5494         im.set_data(X)
   5495         im.set_alpha(alpha)
   5496         if im.get_clip_path() is None:

/usr/local/lib/python3.5/dist-packages/matplotlib/image.py in set_data(self, A)
    628         A : array-like
    629         """
--&gt; 630         self._A = cbook.safe_masked_invalid(A, copy=True)
    631 
    632         if (self._A.dtype != np.uint8 and

/usr/local/lib/python3.5/dist-packages/matplotlib/cbook/__init__.py in safe_masked_invalid(x, copy)
    782 
    783 def safe_masked_invalid(x, copy=False):
--&gt; 784     x = np.array(x, subok=True, copy=copy)
    785     if not x.dtype.isnative:
    786         # Note that the argument to `byteswap` is 'inplace',

~/.local/lib/python3.5/site-packages/torch/tensor.py in __array__(self, dtype)
    448     def __array__(self, dtype=None):
    449         if dtype is None:
--&gt; 450             return self.numpy()
    451         else:
    452             return self.numpy().astype(dtype, copy=False)

RuntimeError: Can't call numpy() on Variable that requires grad. Use var.detach().numpy() instead.
</code></pre>

AnBucquet: <p>Hi,<br>
Your tensor is a CUDA tensor so you can’t use matplotlib directly.<br>
try:</p>
<pre><code class="lang-auto">plt.imshow(params[0][0].detach().cpu().numpy())
</code></pre>
<p>It should work</p>

wonchulSon: <p><a class="mention" href="/u/anbucquet">@AnBucquet</a><br>
It works!!<br>
Thank you so much^^.</p>