我有一个输入的Tensorflow粗糙Tensor,结构类似于[batch num_images width height channels]
,我需要迭代维度num_images
,以提取一些与下游应用相关的特征。示例代码如下:
from tensorflow.keras.applications.efficientnet import EfficientNetB7
from tensorflow.keras.layers import Input
import tensorflow as tf
eff_net = EfficientNetB7(weights='imagenet', include_top=False)
input_claim = Input(shape=(None, 600, 600, 3), name='input_1', ragged=True)
eff_out = tf.map_fn(fn=eff_net,
elems=input_claim, fn_output_signature=tf.float32)
第一个Input
维度被设置为None
,因为它可以在数据点之间不同,并且由于这个原因,输入接收tf.RaggedTensor
的示例。
这段代码以TypeError
的方式中断TypeError: Could not build a TypeSpec for KerasTensor(type_spec=RaggedTensorSpec(TensorShape([None, None, 600, 600, 3]), tf.float32, 1, tf.int64), name='input_1', description="created by layer 'input_1'") of unsupported type <class 'keras.engine.keras_tensor.RaggedKerasTensor'>.
我怀疑有更好的方法来执行这种类型的预处理
更新:需要num_images
,因为(尽管这里没有描述)我正在此维度上执行以下reduce
操作
1条答案
按热度按时间63lcw9qa1#
您可以使用
tf.ragged.map_flat_values
来实现相同的创建如下所示的模型:
测试,