我想用keras运行一个lstm . 我有5个类进行分类,编码为一个热门标签 .

这是我的模型:

model = Sequential()
model.add(Embedding(10000, 32))
model.add(LSTM(64, dropout_W=0.2, dropout_U=0.2))
model.add(Dense(5, activation='sigmoid'))

model.compile(loss='categorical_crossentropy',
              optimizer='rmsprop',
              metrics='acc')

model.fit(xtrain, ytrain, batch_size=128, nb_epoch=10,validation_split=0.2)

但是我收到以下错误:

TypeError:'Assign'Op的输入'ref'需要输入l值

这是错误日志:

TypeError Traceback(最近一次调用最后一次)in()6 n_epochs = 10 7 ----> 8 history = model.fit(train_encoded,train_labels_lstm,batch_size = bs,nb_epoch = n_epochs,validation_split = 0.2)〜\ Anaconda3 \ lib \ site-packages \ keras \ models.py in fit(self,x,y,batch_size,epochs,verbose,callbacks,validation_split,validation_data,shuffle,class_weight,sample_weight,initial_epoch,steps_per_epoch,validation_steps,** kwargs)961 initial_epoch = initial_epoch,962 steps_per_epoch = steps_per_epoch, - > 963 validation_steps = validation_steps)964 965 def evaluate(self,x = None,y = None,〜\ Anaconda3 \ lib \ site-packages \ keras \ engine \ training.py in fit( self,x,y,batch_size,epochs,verbose,call_ss,validation_split,validation_data,shuffle,class_weight,sample_weight,initial_epoch,steps_per_epoch,validation_steps,** kwargs)1680 else:1681 ins = xy sample_weights - > 1682 self._make_train_function() 1683 f = self.train_function 1684~ \ Anaconda3 \ lib \ site-packages \ keras \ engine \ training.py in _make_train_function(self)988 training_updates = self.optimizer.get_updates(989 params = self._collected_trainable_weights, - > 990 loss = self.total_loss)991 updates = self.updates training_updates self.metrics_updates 992#获取损失和指标 . 每次通话时更新权重 . 〜\ Anaconda3 \ lib \ site-packages \ keras \ legacy \ interfaces.py in wrapper(* args,** kwargs)89 warnings.warn('更新你的'object_name 90'调用Keras 2 API:'signature,stacklevel = 2)---> 91 return func(* args,** kwargs)92 wrapper._original_function = func 93返回包装器〜\ Anaconda3 \ lib \ site-packages \ keras \ optimizers.py in get_updates(self,loss,params) )255#update accumulator 256 new_a = self.rho * a(1. - self.rho)* K.square(g) - > 257 self.updates.append(K.update(a,new_a))258 new_p = p - lr * g /(K.sqrt(new_a)self.epsilon)259〜\ Anaconda3 \ lib \ site-packages \ keras \ backend \ tensorflow_backend.py in update(x,new_x)961变量x已更新 . 962“”“ - > 963在assign(ref,value,validate_shape,use_locking,name )45 result = _op_def_lib.apply_op(“Assign”,ref = ref,value = value,46 validate_shape = validate_shape,---> 47 use_locking = use_locking,name = name)48返回结果49~ \ Anaconda3 \ lib \ site- apply_op中的packages \ tensorflow \ python \ framework \ op_def_library.py(self,op_type_name,name,** keywords)615引发TypeError(616“输入'%s'的'%s'操作需要l值输入”% - > 617(input_name,op_type_name))618 input_types.extend(types)619 else:TypeError:输入'ref'的'Assign'Op需要输入l值

我应该改变什么?