如何将输入矩阵展平为向量?

时间:2019-02-16 21:15:26

标签: python numpy deep-learning

据我了解,此练习的目的是将矩阵x展平为n×1的向量。为了让我们为这个家庭作业示例作业做好准备,Ng教授让我们在Coursera Jupiter笔记本中进行了Python Basics With Numpy的练习。这是示例之一:

def image2vector(image):
"""
Argument:
image -- a numpy array of shape (length, height, depth)

Returns:
a vector of shape (length*height*depth, 1)
"""
return image.reshape(image.shape[0]*image.shape[1]*image.shape[2],1)

这是一个3 x 3 x 2的数组,通常图像将是(num_px_x,num_px_y,3),其中3代表RGB值

image = np.array([[[ 0.67826139,  0.29380381],
    [ 0.90714982,  0.52835647],
    [ 0.4215251 ,  0.45017551]],

   [[ 0.92814219,  0.96677647],
    [ 0.85304703,  0.52351845],
    [ 0.19981397,  0.27417313]],

   [[ 0.60659855,  0.00533165],
    [ 0.10820313,  0.49978937],
    [ 0.34144279,  0.94630077]]])

print ("image2vector(image) = " + str(image2vector(image)))

**Expected Output**: 


<table style="width:100%">
 <tr> 
   <td> **image2vector(image)** </td> 
   <td> [[ 0.67826139]
[ 0.29380381]
[ 0.90714982]
[ 0.52835647]
[ 0.4215251 ]
[ 0.45017551]
[ 0.92814219]
[ 0.96677647]
[ 0.85304703]
[ 0.52351845]
[ 0.19981397]
[ 0.27417313]
[ 0.60659855]
[ 0.00533165]
[ 0.10820313]
[ 0.49978937]
[ 0.34144279]
[ 0.94630077]]</td> 
 </tr>


现在我在家庭作业中遇到的问题之一是应用此练习示例。

现在他给我们的提示是:

“当您要将形状(a,b,c,d)的矩阵X展平为矩阵时的技巧

   X_flatten of shape (b ∗ c ∗ d, a) is to use:    X_flatten = X.reshape(X.shape[0], -1).T "

现在我知道X.reshape(X.shape [0],-1).T是一个“技巧”,您可以用来实现我们的目标,即展平X,但是我想保持一致并尝试根据开头给出的示例来解决此问题。

这就是我得到的:

    train_set_x_flatten = train_set_x_orig.reshape(train_set_x_orig.shape[1] * 
    train_set_x_orig.shape[2] * train_set_x_orig.shape[3],1)

他还告诉我们: train_set_x_orig是一个形状为numpy的数组(m_​​train,num_px,num_px,3)

上面的代码与实践示例一致,我不确定为什么它不起作用。我会喜欢一些与开始时给出的示例一致的建议!

谢谢!

0 个答案:

没有答案