问题描述
我有一个参差不齐的张量 seq
(num_sentences,num_words,word_dim)。如果我想在末尾添加一个带有切片 seq[...,tf.newaxis]
的新轴(维度),它会失败并显示以下错误。
tf.expand_dims(seq,-1)
但是有效。
对此有解释吗?另外,我更愿意使用切片语法,因为它更具可读性——如果 expand_dims
的第一个参数更复杂——你必须在最后的某个地方编写 axis
参数(其他地方轴参数通常会累积...).
File "main.py",line 159,in __init__
seq = seq[...,tf.newaxis]
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py",line 205,in wrapper
result = dispatch(wrapper,args,kwargs)
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py",line 118,in dispatch
result = dispatcher.handle(args,kwargs)
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/keras/layers/core.py",line 1538,in handle
return SlicingOpLambda(self.op)(*args,**kwargs)
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py",line 951,in __call__
return self._functional_construction_call(inputs,kwargs,File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py",line 1090,in _functional_construction_call
outputs = self._keras_tensor_symbolic_call(
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py",line 822,in _keras_tensor_symbolic_call
return self._infer_output_signature(inputs,input_masks)
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py",line 863,in _infer_output_signature
outputs = call_fn(inputs,*args,**kwargs)
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/keras/layers/core.py",line 1521,in _call_wrapper
return original_call(*new_args,**new_kwargs)
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/keras/layers/core.py",line 1327,in _call_wrapper
return self._call_wrapper(*args,line 1359,in _call_wrapper
result = self.function(*args,**kwargs)
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py",line 201,in wrapper
return target(*args,**kwargs)
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/ops/array_ops.py",line 963,in _slice_helper
tensor = ops.convert_to_tensor(tensor)
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/profiler/trace.py",line 163,in wrapped
return func(*args,**kwargs)
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/framework/ops.py",line 1540,in convert_to_tensor
ret = conversion_func(value,dtype=dtype,name=name,as_ref=as_ref)
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/framework/constant_op.py",line 339,in _constant_tensor_conversion_function
return constant(v,name=name)
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/framework/constant_op.py",line 264,in constant
return _constant_impl(value,dtype,shape,name,verify_shape=False,File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/framework/constant_op.py",line 281,in _constant_impl
tensor_util.make_tensor_proto(
File "/home/adam/.local/lib/python3.8/site-packages/tensorflow/python/framework/tensor_util.py",line 551,in make_tensor_proto
raise TypeError("Failed to convert object of type %s to Tensor. "
TypeError: Failed to convert object of type <class 'tensorflow.python.ops.ragged.ragged_tensor.RaggedTensor'> to Tensor. Contents: tf.RaggedTensor(values=Tensor("Placeholder:0",shape=(None,64),dtype=float32),row_splits=Tensor("Placeholder_1:0",),dtype=int64)). Consider casting elements to a supported type.
编辑: 复制错误:
inputs = tf.keras.layers.Input([None,10],dtype=tf.float32,ragged=True)
inputs[...,tf.newaxis]
Out: # I get the error above
tf.expand_dims(inputs,-1)
Out: <KerasTensor: type_spec=RaggedTensorSpec(TensorShape([None,None,10,1]),tf.float32,1,tf.int64) (created by layer 'tf.expand_dims')>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)