Python ValueError:无法将包含99872个元素的张量重塑为[1125,1,8]

Python ValueError:无法将包含99872个元素的张量重塑为[1125,1,8],python,keras,Python,Keras,我正在尝试制作一个样本大小为125*8的模型 我的输入形状是(12484,8),但我给出了以下错误: ValueError:无法重塑包含99872个元素的张量的形状 [1125,1,8](1000个元素)用于带有输入的“重塑_9”(op:“重塑”) 形状:[112484,1,8],[4]和输入张量计算为部分 形状:输入=[1125,1,8] 输出 ---------------------------------------------------------------------------

我正在尝试制作一个样本大小为125*8的模型 我的输入形状是(12484,8),但我给出了以下错误:

ValueError:无法重塑包含99872个元素的张量的形状 [1125,1,8](1000个元素)用于带有输入的“重塑_9”(op:“重塑”) 形状:[112484,1,8],[4]和输入张量计算为部分 形状:输入=[1125,1,8]

输出

---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in _create_c_op(graph, node_def, inputs, control_inputs)
   1588   try:
-> 1589     c_op = c_api.TF_FinishOperation(op_desc)
   1590   except errors.InvalidArgumentError as e:

InvalidArgumentError: Cannot reshape a tensor with 99872 elements to shape [1,125,1,8] (1000 elements) for 'Reshape_9' (op: 'Reshape') with input shapes: [1,12484,1,8], [4] and with input tensors computed as partial shapes: input[1] = [1,125,1,8].

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-89-4e8b18efb44b> in <module>()
      1 #x_train= tf.reshape(x_train,[-1,288, 512, 3])
      2 
----> 3 x_train= tf.reshape(x_train,[1,125,1,8])
      4 
      5 

~\Anaconda3\lib\site-packages\tensorflow\python\ops\gen_array_ops.py in reshape(tensor, shape, name)
   7429   if _ctx is None or not _ctx._eager_context.is_eager:
   7430     _, _, _op = _op_def_lib._apply_op_helper(
-> 7431         "Reshape", tensor=tensor, shape=shape, name=name)
   7432     _result = _op.outputs[:]
   7433     _inputs_flat = _op.inputs

~\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords)
    785         op = g.create_op(op_type_name, inputs, output_types, name=scope,
    786                          input_types=input_types, attrs=attr_protos,
--> 787                          op_def=op_def)
    788       return output_structure, op_def.is_stateful, op
    789 

~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in create_op(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_shapes, compute_device)
   3412           input_types=input_types,
   3413           original_op=self._default_original_op,
-> 3414           op_def=op_def)
   3415 
   3416       # Note: shapes are lazily computed with the C API enabled.

~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in __init__(self, node_def, g, inputs, output_types, control_inputs, input_types, original_op, op_def)
   1754           op_def, inputs, node_def.attr)
   1755       self._c_op = _create_c_op(self._graph, node_def, grouped_inputs,
-> 1756                                 control_input_ops)
   1757     else:
   1758       self._c_op = None

~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in _create_c_op(graph, node_def, inputs, control_inputs)
   1590   except errors.InvalidArgumentError as e:
   1591     # Convert to ValueError for backwards compatibility.
-> 1592     raise ValueError(str(e))
   1593 
   1594   return c_op

ValueError: Cannot reshape a tensor with 99872 elements to shape [1,125,1,8] (1000 elements) for 'Reshape_9' (op: 'Reshape') with input shapes: [1,12484,1,8], [4] and with input tensors computed as partial shapes: input[1] = [1,125,1,8].
---------------------------------------------------------------------------
InvalidArgumentError回溯(最后一次最近调用)
~\Anaconda3\lib\site packages\tensorflow\python\framework\ops.py in\u create\u c\u op(图形、节点定义、输入、控制输入)
1588尝试:
->1589 c_op=c_api.TF_FinishOperation(op_desc)
1590错误除外。InvalidArgumentError为e:
InvalidArgumentError:无法将包含99872个元素的张量重塑为[1125,1,8](1000个元素),以便使用输入形状[112484,1,8],[4]并将输入张量计算为部分形状的“重塑_9”(op:“重塑”):输入[1]=[1125,1,8]。
在处理上述异常期间,发生了另一个异常:
ValueError回溯(最近一次调用上次)
在()
1#x#u train=tf.重塑(x#u train,[-1288512,3])
2.
---->3 x_列=tf.重塑(x_列[1125,1,8])
4.
5.
变形中的~\Anaconda3\lib\site packages\tensorflow\python\ops\gen\u array\u ops.py(张量、形状、名称)
7429如果_ctx为None或not _ctx._eager_context.is eager:
7430 u,u,_op=_op_def_lib._apply_op_helper(
->7431“重塑”,张量=张量,形状=形状,名称=名称)
7432 _结果=_运算输出[:]
7433 _输入_平坦=_操作输入
~\Anaconda3\lib\site packages\tensorflow\python\framework\op\u def\u library.py in\u apply\u op\u helper(self,op\u type\u name,name,**关键字)
785 op=g.创建op(op类型名称、输入、输出类型、名称=范围、,
786输入类型=输入类型,属性=属性协议,
-->787 op_def=op_def)
788返回输出结构,op_def.is_stateful,op
789
create\u op中的~\Anaconda3\lib\site packages\tensorflow\python\framework\ops.py(self、opu类型、输入、数据类型、输入类型、名称、属性、opu定义、计算形状、计算设备)
3412输入类型=输入类型,
3413原始值=自身值。默认值原始值,
->3414 op_def=op_def)
3415
3416#注意:形状是在启用C API的情况下延迟计算的。
~\Anaconda3\lib\site packages\tensorflow\python\framework\ops.py in_uuu_uinit_uuu(self、node_def、g、输入、输出_类型、控制_输入、输入_类型、原始_op、op_def)
1754操作定义,输入,节点定义属性)
1755 self._c_op=_create_c_op(self._图形、节点定义、分组输入、,
->1756控制(输入操作)
1757其他:
1758年自报。_c_op=None
~\Anaconda3\lib\site packages\tensorflow\python\framework\ops.py in\u create\u c\u op(图形、节点定义、输入、控制输入)
1590错误除外。InvalidArgumentError为e:
1591#转换为ValueError以实现向后兼容性。
->1592上升值错误(str(e))
1593
1594返回c_op
ValueError:无法将包含99872个元素的张量重塑为[1125,1,8](1000个元素)的形状,用于输入形状为[112484,1,8],[4]且输入张量计算为部分形状的“重塑9”(op:“重塑”):输入[1]=[1125,1,8]。

重塑时,元素的总和必须始终相同

您收到此错误是因为1*125*1*8!=99872

您的输入形状定义为:input_shape=(8125,1)

卷积(批、行、列、通道)

您的原始x_火车形状是:[112484,1,8]


您需要验证通道、行和列,然后进行相应的重塑。

重塑时,元素的总和必须始终相同

您收到此错误是因为1*125*1*8!=99872

您的输入形状定义为:input_shape=(8125,1)

卷积(批、行、列、通道)

您的原始x_火车形状是:[112484,1,8]


您需要验证通道、行和列,然后进行相应的整形。

由于VegardKT的解释,预计整形错误

据我所知,您希望首先使用125个示例(而不是12484个示例)在数据的样本子集上尝试网络。然后,您不需要重塑,但切片应该可以完成这项工作

如果我对你问题的理解是正确的

1] 注释掉重塑()的行

2] 使模型适合x_列[125,:]和y_列[125,:](只需从训练数据和标签集中选择前125行和所有列。)


如果我在这里误解了什么,请告诉我。

由于VegardKT的解释,预计会出现重塑错误

据我所知,您希望首先使用125个示例(而不是12484个示例)在数据的样本子集上尝试网络。然后,您不需要重塑,但切片应该可以完成这项工作

如果我对你问题的理解是正确的

1] 注释掉重塑()的行

2] 使模型适合x_列[125,:]和y_列[125,:](只需从训练数据和标签集中选择前125行和所有列。)


如果我在这里误解了什么,请告诉我。

你能告诉我现在该怎么办吗。我需要添加样本总数吗?我的输入不是图像,所以我想我的频道数是1,有没有其他方法可以找到频道?请告诉我现在可以做什么。从上周开始,我一直在努力解决这个问题。当我试图修正一件事时,我给出了另一个错误。非常感谢。我认为你需要更好地解释一下你实际上想要实现的目标。你的数据是什么?x_train中的不同维度实际上代表什么?我正在尝试用5个手势进行肌电图分类
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in _create_c_op(graph, node_def, inputs, control_inputs)
   1588   try:
-> 1589     c_op = c_api.TF_FinishOperation(op_desc)
   1590   except errors.InvalidArgumentError as e:

InvalidArgumentError: Cannot reshape a tensor with 99872 elements to shape [1,125,1,8] (1000 elements) for 'Reshape_9' (op: 'Reshape') with input shapes: [1,12484,1,8], [4] and with input tensors computed as partial shapes: input[1] = [1,125,1,8].

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-89-4e8b18efb44b> in <module>()
      1 #x_train= tf.reshape(x_train,[-1,288, 512, 3])
      2 
----> 3 x_train= tf.reshape(x_train,[1,125,1,8])
      4 
      5 

~\Anaconda3\lib\site-packages\tensorflow\python\ops\gen_array_ops.py in reshape(tensor, shape, name)
   7429   if _ctx is None or not _ctx._eager_context.is_eager:
   7430     _, _, _op = _op_def_lib._apply_op_helper(
-> 7431         "Reshape", tensor=tensor, shape=shape, name=name)
   7432     _result = _op.outputs[:]
   7433     _inputs_flat = _op.inputs

~\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords)
    785         op = g.create_op(op_type_name, inputs, output_types, name=scope,
    786                          input_types=input_types, attrs=attr_protos,
--> 787                          op_def=op_def)
    788       return output_structure, op_def.is_stateful, op
    789 

~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in create_op(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_shapes, compute_device)
   3412           input_types=input_types,
   3413           original_op=self._default_original_op,
-> 3414           op_def=op_def)
   3415 
   3416       # Note: shapes are lazily computed with the C API enabled.

~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in __init__(self, node_def, g, inputs, output_types, control_inputs, input_types, original_op, op_def)
   1754           op_def, inputs, node_def.attr)
   1755       self._c_op = _create_c_op(self._graph, node_def, grouped_inputs,
-> 1756                                 control_input_ops)
   1757     else:
   1758       self._c_op = None

~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in _create_c_op(graph, node_def, inputs, control_inputs)
   1590   except errors.InvalidArgumentError as e:
   1591     # Convert to ValueError for backwards compatibility.
-> 1592     raise ValueError(str(e))
   1593 
   1594   return c_op

ValueError: Cannot reshape a tensor with 99872 elements to shape [1,125,1,8] (1000 elements) for 'Reshape_9' (op: 'Reshape') with input shapes: [1,12484,1,8], [4] and with input tensors computed as partial shapes: input[1] = [1,125,1,8].