输入形状中奇怪的Dimension()对象?

我遇到Tensorflow问题。我已将问题缩小到tf-keras中自定义Attention层的build()方法的输入形状的格式。我正在获取Dimension()对象的列表,而不是实际的输入形状。请帮忙。

注意层

    x_attn = []

    for i in range(self.attn_range): #4
        x_attn.append(Attention()(x))

    print("DEBUG:00001")
    x = L.concatenate(-1)(x_attn)

自定义注意层build()方法:

def build(self,input_shape):
    print("DEBUG:00005")
    params_shape = list(input_shape[1:])
    print("DEBUG:00007",params_shape)
    self.query_weights = self.add_weight(
    name='q_weights',shape=params_shape,initializer=self.q_weights_init
    )
    print("DEBUG:00006")
    self.key_weights = self.add_weight(
    name='key_weights',initializer=self.key_weights_init
    )
    self.val_weights = self.add_weight(
    name='val_weights',initializer=self.value_weights_init
    )

参数形状调试打印功能的输出为: DEBUG:00007 [Dimension(10),Dimension(5),Dimension(128)]

编辑:

要求的完整错误消息:

    Traceback (most recent call last):
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py",line 558,in make_tensor_proto
    str_values = [compat.as_bytes(x) for x in proto_values]
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py",in <listcomp>
    str_values = [compat.as_bytes(x) for x in proto_values]
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/util/compat.py",line 65,in as_bytes
    (bytes_or_text,))
TypeError: Expected binary or unicode string,got Dimension(10)

During handling of the above exception,another exception occurred:

Traceback (most recent call last):
  File "Empowerment\.py",line 327,in <module>
    env_actor = ComputerEnv()
  File "Empowerment\.py",line 225,in __init__
    self.dqn = ICDQNAgent(self.state_size + (3,),self.state_size[0],4)
  File "Empowerment\.py",line 78,in __init__
    self.model,self.autoencoder,self.critic = self.build_model()
  File "Empowerment\.py",line 99,in build_model
    x_attn.append(Attention()(x))
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py",line 591,in __call__
    self._maybe_build(inputs)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py",line 1881,in _maybe_build
    self.build(input_shapes)
  File "/home/ai/Desktop/ai_proj/layers.py",line 69,in build
    initializer=self.q_weights_init
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py",line 384,in add_weight
    aggregation=aggregation)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py",line 663,in _add_variable_with_custom_getter
    **kwargs_for_getter)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer_utils.py",line 155,in make_variable
    shape=variable_shape if variable_shape.rank else None)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/variables.py",line 259,in __call__
    return cls._variable_v1_call(*args,**kwargs)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/variables.py",line 220,in _variable_v1_call
    shape=shape)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/variables.py",line 198,in <lambda>
    previous_getter = lambda **kwargs: default_variable_creator(None,**kwargs)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/variable_scope.py",line 2495,in default_variable_creator
    shape=shape)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/variables.py",line 263,in __call__
    return super(VariableMetaclass,cls).__call__(*args,**kwargs)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/resource_variable_ops.py",line 460,in __init__
    shape=shape)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/resource_variable_ops.py",line 604,in _init_from_args
    initial_value() if init_from_fn else initial_value,File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer_utils.py",line 135,in <lambda>
    init_val = lambda: initializer(shape,dtype=dtype)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/init_ops.py",line 533,in __call__
    shape,-limit,limit,dtype,seed=self.seed)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/random_ops.py",line 239,in random_uniform
    shape = _ShapeTensor(shape)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/random_ops.py",line 44,in _ShapeTensor
    return ops.convert_to_tensor(shape,dtype=dtype,name="shape")
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/ops.py",line 1087,in convert_to_tensor
    return convert_to_tensor_v2(value,preferred_dtype,name)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/ops.py",line 1145,in convert_to_tensor_v2
    as_ref=False)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/ops.py",line 1224,in internal_convert_to_tensor
    ret = conversion_func(value,name=name,as_ref=as_ref)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py",line 305,in _constant_tensor_conversion_function
    return constant(v,name=name)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py",line 246,in constant
    allow_broadcast=True)
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py",line 284,in _constant_impl
    allow_broadcast=allow_broadcast))
  File "/home/ai/anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py",line 562,in make_tensor_proto
    "supported type." % (type(values),values))
TypeError: Failed to convert object of type <class 'list'> to Tensor. Contents: [Dimension(10),Dimension(128)]. Consider casting elements to a supported type.
lqlzzm156 回答:输入形状中奇怪的Dimension()对象?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3146686.html

大家都在问