在keras中拟合模型时无效的参数错误

时间:2019-07-16 05:31:20

标签: tensorflow keras deep-learning sequence-to-sequence

我正在尝试在定额问题对数据集上的喀拉拉邦中创建序列以对模型进行排序。此模型应生成给定句子的释义句子。这是我要遵循的体系结构。我正在Google Colab GPU运行时上运行代码。

这是我正在运行的代码:

样本数= 1000,input_vocab_size = 2347,ta​​rget_vocab_size = 2376

## create an encoder architecture
encoder_input=Input(shape=(None,))
encoder_embeddings=Embedding(input_dim=input_vocab_size,output_dim=128,name='encoder_embedding')
encoder_gru_1=GRU(512,name="encoder_gru_1",return_sequences=True)
encoder_gru_2=GRU(512,name="encoder_gru_2",return_sequences=True)
encoder_gru_3=GRU(512,name="encoder_gru_3",return_sequences=False)

def Create_Encoder():
    #Here we will use functional api of keras
    net=encoder_input
    net=encoder_embeddings(net)
    ## not need to connect GRU units
    net=encoder_gru_1(net)
    net=encoder_gru_2(net)
    net=encoder_gru_3(net)
    return net


##Now create decoder architecture
decoder_initial_state=Input(shape=(512,),name="decoder_initial_state")
decoder_input=Input(shape=(None,),name="decoder_input")
decoder_embeddings=Embedding(input_dim=target_vocab_size,output_dim=128,name='decoder_embedding')
decoder_gru_1=GRU(512,name="decoder_gru_1",return_sequences=True)
decoder_gru_2=GRU(512,name="decoder_gru_2",return_sequences=True)
decoder_gru_3=GRU(512,name="decoder_gru_3",return_sequences=True)
decoder_dense=Dense(target_vocab_size,activation="linear")

def Create_Decoder(initial_state):
    #Here we will use functional api of keras
    net=decoder_input
    net=decoder_embeddings(net)
    ## not need to connect GRU units
    net=decoder_gru_1(net,initial_state=initial_state)
    net=decoder_gru_2(net,initial_state=initial_state)
    net=decoder_gru_3(net,initial_state=initial_state)
    net=decoder_dense(net)  
    return net

##Create a Training Model
encoder_output=Create_Encoder()
decoder_output=Create_Decoder(encoder_output)
model_train=Model(inputs=[encoder_input,decoder_input],outputs=[decoder_output])
optimizer=optimizers.RMSprop(lr=1e-3)
decoder_target = tf.placeholder(dtype='float32', shape=(None, None))
model_train.compile(optimizer=optimizer, loss=KL.sparse_categorical_crossentropy,metrics=['acc'],target_tensors=[decoder_target])
model_train.summary()

这是我得到的摘要- Result 然后我尝试拟合模型

model_train.fit([encoder_input_data, decoder_input_data],np.expand_dims(decoder_target_data, -1),
          batch_size=32,
          epochs=20,
          validation_split=0.3,callbacks=callbacks)

但是在安装时出现此错误-

  

InvalidArgumentError:找到2个根本错误。 (0)无效的参数:   不兼容的形状:[6560]与[32,206] [[{{node   metrics / acc / Equal}}]]] [[loss / mul / _123]](1)无效的参数:   不兼容的形状:[6560]与[32,206] [[{{node   metrics / acc / Equal}}]] 0次成功操作。 0个派生错误   忽略。

但是如果将批量大小更改为640,我会遇到其他问题-

  

ResourceExhaustedError:找到2个根本错误。 (0)资源耗尽:   分配形状为[640,206,2376]的张量并在   / job:本地主机/副本:0 /任务:0 /设备:GPU:0通过分配器GPU_0_bfc   [[{{节点   training_1 / RMSprop / gradients / loss_1 / dense_2_loss / clip_by_value / Minimum_grad / LessEqual}]]]]   提示:如果您想在发生OOM时看到分配的张量列表,   将report_tensor_allocations_upon_oom添加到当前的RunOptions   分配信息metric_1 / acc /平均值/ _251提示:如果您想查看   OOM发生时分配的张量列表,添加   report_tensor_allocations_upon_oom到当前的RunOptions   分配信息0次成功操作。忽略0个派生错误。

如果有人有解决方案,请在同一点上提供帮助。

0 个答案:

没有答案