将数组和张量转换为矩阵,然后执行矩阵运算

时间:2020-09-04 17:37:42

标签: python tensorflow matrix keras matrix-multiplication

我有两个大小为(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数组,以便我可以plotmatplotlip上输出。 / p>

谁能帮助我先将数组转换为矩阵。然后正确转置第三个数组。最后,将输出调整为一个大小为28 * 28的uint8数组。

我正在使用python中的tensorflow和keras。

1 个答案:

答案 0 :(得分:0)

将array1转换为np.asmatrix()

array1 = np.asmatrix(array1)

对于array2,将其更改为numpy array fist,然后将其转换为矩阵:

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

对于array3,首先将其更改为numpy array,然后将其强制转换为矩阵。最后,转置该矩阵:

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()