问题描述
我有元组numpy(具有len 4,5,6或更多),如何使用以下输入将元组numpy转换为元组张量:
import tensorflow as tf
import numpy as np
a = np.array([[20,20],[40,40]],dtype=np.int32)
b = np.array([[20,20,40,40],[60,60,60]],dtype=np.int32)
c = np.array([[20,dtype=np.int32)
d = np.array([[20,dtype=np.int32)
e = (a,b,c,d) # e is numpy tensor i want convert to tensor
tf_shapes = ((None,2),(None,3),(2,(3,3))
tf_types = (tf.int64,tf.float32,tf.int64,tf.float32)
def data_generator():
for i in range(16):
yield a,d
dataset=tf.data.Dataset.from_generator(data_generator,tf_types,tf_shapes).batch(batch_size=4,drop_remainder=True)
for sample in dataset:
res = model(sample,training=False)
解决方法
我不确定我是否正确理解了您的问题,但是看来您只是想将a
,b
,c
和d
转换为tensorflow张量,而不必使用tf.data.Dataset.from_generator
函数。
在这种情况下,您只需使用tf.convert_to_tensor
:
import tensorflow as tf
import numpy as np
a_tensor = tf.convert_to_tensor(a,np.int32)
b_tensor = tf.convert_to_tensor(b,np.int32)
c_tensor = tf.convert_to_tensor(c,np.int32)
d_tensor = tf.convert_to_tensor(d,np.int32)
# use the tensors however you want
此外,如果您想在代码中使用类似于e
的张量,请执行以下操作:
e_tensor = tf.stack(e,axis=0)
# e_tensor[0] == a_tensor,e_tensor[1] == b_tensor,...