簡體   English   中英

將數組和張量轉換為矩陣,然后執行矩陣運算

[英]Convert arrays and tensors to matrices then perform matrix operations

我有兩個大小為 (128,) 的數組和第三個大小為 (784, 128) 的數組:

array1.shape()
out: (128,)
array2.shape()
out: (128,)
array3.shape()
out: (784,128)

它們具有相同的數據類型,但dtype()輸出不同:

array1.dtype
out: float32
array2.dtype
out: <dtype: 'float32'>
array2.dtype
out: <dtype: 'float32'>

它們屬於不同的類:

type(array1)
out: <class 'numpy.ndarray'>
type(array2)
out: <class 'tensorflow.python.ops.resource_variable_ops.ResourceVariable'>
type(array3)
out: <class 'tensorflow.python.ops.resource_variable_ops.ResourceVariable'>

我想執行以下矩陣運算:

(array1 - array2) * array3.T

其中 T 是 array3 的轉置。

最后,輸出矩陣(即 [784 * 1])需要重新整形以成為形狀為 28 * 28 的 uint8 數組,以便我可以在matplotlipplot該輸出。

誰能幫我先把數組轉換成矩陣。 然后正確轉置第三個數組。 最后,將輸出重塑為大小為 28 * 28 的 uint8 數組。

我正在 python 中使用 tensorflow 和 keras。

將 array1 轉換為np.asmatrix()

array1 = np.asmatrix(array1)

對於 array2,將其更改為 numpy array fist,然后將其轉換為矩陣:

array2 = array2.numpy()
array2 = np.asmatrix(array2)

對於 array3,首先將其更改為 numpy 數組,然后將其轉換為矩陣。 最后,轉置該矩陣:

array3 = array3.numpy()
array3 = np.asmatrix(array3)
array3 = np.transpose(array3)

最后,應用矩陣運算:

result = (array1 - array2) * array3

要繪制輸出,請使用以下命令:

result = np.array(result)
plt.imshow(result.reshape(28, 28), cmap='gray')
plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM