我试图通过以下方式将两个具有不同形状的矩阵放在张量中:
import tensorflow as tf
matrix = [[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]]
matrix2 = [[1, 2, 3],
[6, 7, 8],
[11, 12, 13],
[16, 17, 18],
[21, 22, 23]]
test = []
test.append(matrix)
test.append(matrix2)
with tf.Session().as_default():
c = tf.convert_to_tensor(test)
print(c.eval())
执行此代码会产生以下错误:
ValueError: Argument must be a dense tensor: got shape [2, 5], but wanted [2, 5, 5]
如果我将这些矩阵转换为numpy数组,那么numpy数组会将每个矩阵的行视为列表。有没有其他方法可以在Tensorflow中执行我的目标操作?
答案 0 :(得分:0)
错误是由于matrix
(5x5)和matrix2
(5x3)的尺寸不匹配造成的。
import numpy as np
mat2=[[1,2,3],[6,7,8]]
mat1=[[1,2,3,4,5],[3,4,5,6,7]]
test = []
test.append(mat1)
test.append(mat2)
res=np.array(test)
print res
数组([[list([1,2,3,4,5]),list([3,4,5,6,7])], [list([1,2,3]),list([6,7,8])]],dtype = object)
此处res
是Jagged array。为了创建一个张量,你需要一个Matrix,即基本差异是矩阵的形状也就是张量的等级(与数学中的秩不同)应该是矩形的(每行的元素数相等) See here。
在你的情况下,你试图从维度[(5x5),(5x3)]的三维列表创建一个张量,即。三维阵列内的两个二维阵列的尺寸不匹配。
解决方案:
制作matrix
[5x3]或制作matrix2
[5x5]