Python 张量流输入维数不匹配问题

Python 张量流输入维数不匹配问题,python,tensorflow,Python,Tensorflow,我已经创建了一个LSTM-NN。我正在传递输入,但收到错误: ValueError:层lstm的输入0与层不兼容:预期ndim=3,发现ndim=1。收到完整形状:(7,) 为了解决这个问题,我引用了一篇堆栈溢出帖子,其中提到了参数的用法:input_shape。由于缺乏理解,我仍然无法解决我的问题。请帮忙。 这是我的密码 #这是模型的定义 LSTMmodel类(tf.Module): 定义初始化(self,arg_name=None): super()。\uuuu init\uuuu(name

我已经创建了一个LSTM-NN。我正在传递输入,但收到错误:
ValueError:层lstm的输入0与层不兼容:预期ndim=3,发现ndim=1。收到完整形状:(7,)

为了解决这个问题,我引用了一篇堆栈溢出帖子,其中提到了参数的用法:input_shape。由于缺乏理解,我仍然无法解决我的问题。请帮忙。 这是我的密码

#这是模型的定义
LSTMmodel类(tf.Module):
定义初始化(self,arg_name=None):
super()。\uuuu init\uuuu(name=arg\u name)
self.\uuuu输入=tf.变量(初始值=[0代表范围(7)])
self.\u network=tf.keras.layers.LSTM(单位=7,输入形状=(7,)
self.\uuuu输出=tf.变量(初始值=[0代表范围(7)])
@功能
def序列(自身、参数数据序列、标签、学习率):
将tf.GradientTape()作为t:
self.\uuuu输入=tf.变量(初始值=[0代表范围(7)])
自。\输出=自。\网络(自。\输入)
损失=tf.nn.sigmoid\u交叉\u熵\u与逻辑(标签=无,逻辑=无)
dw,db=t梯度(损耗,[self.w,self.b])
自我分配(学习率*dw)
self.b.assign\u sub(学习率*db)
@功能
定义调用(self,arg\u输入=[0代表范围(7)]:
self.\uuu输入=tf.变量(arg\u输入)
自。\输出=自。\网络(自。\输入)
返回自输出
#这是我为出现问题的培训提供的输入。
#两个变量“cgm”和“labels”是长度为9222的列表。
#列表中的每个元素都是一个长度为7的列表,只填充整数。
modela=LSTMmodel(arg_name='namea')
模型A.列车(cgm,标签,0.4)
```

LSTM将3D张量作为输入,您将传递1D张量,因此需要将其重塑为适当的形状

self.__input = tf.Variable(initial_value=[0 for x in range(7)])
self.__input_reshaped = tf.reshape(self.__input, [1, 7, 1]) # shape of (1, 7, 1)
您还需要更改LSTM的输入形状

self.__network = tf.keras.layers.LSTM(units=7, input_shape=(7,1))
然后将经过整形的输入传递到网络以获得输出

self.__output = self.__network(self.__input_reshaped)