这个错误是因为返回的变量个数少于承接变量的个数
ValueError: too many values to unpack (expected 2)
出错代码如下,在用aa,bb装载返回值时报错,因为其实c返回的仍是一个完整的MapDataset
a=list([1,2,3,4,6])
b=list([1,2,3,4,6])
c=tf.data.Dataset.from_tensor_slices((a,b))
print(c)
def jisuan(x,y):
return 2*x,y*2
aa,bb=c.map(lambda x,y:jisuan(x,y))
如果想要达到a,b分离的效果,需要对Dataset进行遍历,可以将代码改成下面的代码:
import tensorflow as tf
a=list([1,2,3,4,6])
b=list([1,2,3,4,6])
c=tf.data.Dataset.from_tensor_slices((a,b))
print(c)
def jisuan(x,y):
return 2*x,y*2
cc=c.map(lambda x,y:jisuan(x,y))
for element in cc:
a,b=element
print(a)
# aa=cc.as_numpy_iterator()
# bb,dd=aa.next()
# print(bb)
效果:
tf.Tensor(2, shape=(), dtype=int32)
tf.Tensor(4, shape=(), dtype=int32)
tf.Tensor(6, shape=(), dtype=int32)
tf.Tensor(8, shape=(), dtype=int32)
tf.Tensor(12, shape=(), dtype=int32)
Process finished with exit code 0