Data Dimension Reduction
In neural network for points cloud data and temporal data along with the emerging graph convolution nerual network, data dimension reduction is a essential step in calculation graph. However, there is no explicit example code online can be used as template. I will introduce a few lines as a simple implementation in Keras with tensorflow as backend. So, be careful with your framework before a straight copy.
import tensorflow as tf import numpy as np from keras import backend as K from keras.layers.core import Reshape shape = (10,3,3,1) img = np.zeros(shape) for i in range(0,3): for j in range(0,3): img[:,i,j,0] = i*3+j sess = tf.InteractiveSession() a = tf.Print(img, [img], message="This is img: ") # convert numpy.ndarray to tensor a_re = Reshape((a.shape*a.shape,1,1))(a) # a_re.shape = (10,9,1,1) print(a_re.shape) a_sq = tf.squeeze(a_re,) # a_sq.shape = (10,9,1) print(a_sq.shape)
Data Dimension Restoration
In segmentation application, sometimes we need restore data to origin shape after data dimension reduction.
Following the above lines,
a_sq can convert to original shape.
a_bk = Reshape((a.shape,a.shape,a.shape))(a_sq) # the result can be compared using a_bk.eval() and a.eval() result_0 = tf.equal(a,a_bk) # also can use tf.equal to check equality element-wise
Case suspends for better answer if anyone please to enlight more.