Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 时间分布层:不兼容的形状:[32,3,3]与[32,3]_Python_Tensorflow_Machine Learning_Neural Network_Tf.keras - Fatal编程技术网

Python 时间分布层:不兼容的形状:[32,3,3]与[32,3]

Python 时间分布层:不兼容的形状:[32,3,3]与[32,3],python,tensorflow,machine-learning,neural-network,tf.keras,Python,Tensorflow,Machine Learning,Neural Network,Tf.keras,我有一个模型,以前是有效的,但现在它不工作。它给出了一个关于以下内容的错误: InvalidArgumentError:不兼容的形状:[32,3,3]与[32,3] [{{node-Nadam/gradients/loss/time_-distributed_-loss/SquaredDifference_-grad/BroadcastGradientArgs}] 旧型号: class Model: def set_the_model(self, look_back): self.mod

我有一个模型,以前是有效的,但现在它不工作。它给出了一个关于以下内容的错误:

InvalidArgumentError:不兼容的形状:[32,3,3]与[32,3] [{{node-Nadam/gradients/loss/time_-distributed_-loss/SquaredDifference_-grad/BroadcastGradientArgs}]

旧型号

class Model:
def set_the_model(self, look_back):
    self.model = Sequential()
    self.model.add(LSTM(16, activation="relu", input_shape=(look_back, 3),return_sequences=True)) #, stateful=True
    self.model.add(Dropout(0.2))
    self.model.add(LSTM(32, activation="relu", return_sequences=True))
    self.model.add(Dropout(0.2))
    self.model.add(TimeDistributed(Dense(look_back)))
    #self.model.add(Dense(3))
    self.model.compile(loss="mse", optimizer="nadam", metrics=['acc']) #mse
    self.model.summary()

def start_train(self, trainD1, trainD2):
    es = EarlyStopping(monitor='loss', patience = 2, mode='min')
    #for i, j in trainD1, trainD2:
    self.model.fit(trainD1, trainD2, epochs=200, batch_size = 32, verbose=1,  callbacks=[es])
    #  self.model.reset_states()

def predict_result(self, test_case):
    value = self.model.predict(test_case, verbose=0)
    return value
当我在
start\u train
方法中取消注释两行代码时,错误开始出现,我将代码转换为以下内容(当前模型):

然后,我想回到旧型号。当我开始训练模型时,它给出了上面的错误

这是模型的外观:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lstm (LSTM)                  (None, 3, 16)             1280      
_________________________________________________________________ 
dropout (Dropout)            (None, 3, 16)             0         
_________________________________________________________________
lstm_1 (LSTM)                (None, 3, 32)             6272      
_________________________________________________________________
dropout_1 (Dropout)          (None, 3, 32)             0         
_________________________________________________________________
time_distributed (TimeDistri (None, 3, 3)              99        
=================================================================
Total params: 7,651
Trainable params: 7,651
Non-trainable params: 0

编辑:在旧模型上,我将批处理大小更改为1,现在可以工作了,但现在速度会非常慢。

在数据集中循环每个观察值的目的是什么?正如我正确理解的那样,这正是I,j在zip(trainD1,trainD2)所做的。这就是为什么您的代码处理的是batch_size=1,而不处理较高的batch_size值。@s3nh“旧模型”处理的是单个数据集。第二个模型适用于多个输入,如果我将这些输入组合起来,它将不好(根据我的数据)。我处理的每个输入都不具有相同的输入大小;因此,不能除以32。如果我不作为一个发送,它会给我一个错误
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lstm (LSTM)                  (None, 3, 16)             1280      
_________________________________________________________________ 
dropout (Dropout)            (None, 3, 16)             0         
_________________________________________________________________
lstm_1 (LSTM)                (None, 3, 32)             6272      
_________________________________________________________________
dropout_1 (Dropout)          (None, 3, 32)             0         
_________________________________________________________________
time_distributed (TimeDistri (None, 3, 3)              99        
=================================================================
Total params: 7,651
Trainable params: 7,651
Non-trainable params: 0