我有两个大小为(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数组,以便我可以plot
在matplotlip
上输出。 / p>
谁能帮助我先将数组转换为矩阵。然后正确转置第三个数组。最后,将输出调整为一个大小为28 * 28的uint8数组。
我正在使用python中的tensorflow和keras。
答案 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()