-
Notifications
You must be signed in to change notification settings - Fork 9
INN.ResizeFeatures
Zhang Yanbo edited this page Oct 28, 2022
·
3 revisions
CLASS INN.ResizeFeatures(feature_in, feature_out, dist='normal')
[source]
Resize the features of input, for n-d input, include linear or multi-channel inputs. This will turn [N, feature_in, *]
to [N, feature_out, *]
by abandoning feature_in - feature_out
dimensions. The inverse process will fill the feature_in - feature_out
dimensions from dist
distribution.
-
feature_in
: input feature dimension -
feature_out
: output feature dimension.feature_out < feature_in
. This layer will abandon some number of features so we can resize the inputs. -
dist
: distribution model ('normal'
or INN.INNAbstract.Distribution modules). This will defines how it computes the log-probability of abandoned dimensions.
Compute the result y
. If compute_p=True
, it will return y
, logp
and log_detJ
.
Compute the inverse of y
. **args
is only a place-holder for consistency. When doing inverse, the abandoned dimensions will be generated by sampling from the dist
distribution.
import INN
import torch
model = INN.ResizeFeatures(feature_in=3, feature_out=1)
x = torch.Tensor([[1,2,3],
[4,5,6],
[7,8,9]])
y, logp, logdet = model(x)
print(y)
x_hat = model.inverse(y)
print(x_hat)
'''Result
# y = model(x)
tensor([[1.],
[4.],
[7.]])
# x_hat = model.inverse(y)
tensor([[ 1.0000, 1.5800, -0.6237],
[ 4.0000, 0.5238, 0.3988],
[ 7.0000, 1.0111, -0.0900]])
'''