带Keras的LSTM:Assign Op的Input'ref'需要左值inpu

2024-07-08 02:30:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想和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: Input 'ref' of 'Assign' Op requires l-value input

以下是错误日志:

TypeError Traceback (most recent call last) 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, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs) 1680 else:
1681 ins = x + y + 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 # Gets loss and metrics. Updates weights at each call.

~\Anaconda3\lib\site-packages\keras\legacy\interfaces.py in wrapper(*args, **kwargs) 89 warnings.warn('Update your ' + object_name + 90 ' call to the Keras 2 API: ' + signature, stacklevel=2) ---> 91 return func(*args, **kwargs) 92 wrapper._original_function = func 93 return wrapper

~\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 The variable x updated. 962 """ --> 963 return tf.assign(x, new_x) 964 965

~\Anaconda3\lib\site-packages\tensorflow\python\ops\gen_state_ops.py in 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 return result 49

~\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py in apply_op(self, op_type_name, name, **keywords) 615 raise TypeError( 616 "Input '%s' of '%s' Op requires l-value input" % --> 617 (input_name, op_type_name)) 618 input_types.extend(types) 619 else:

TypeError: Input 'ref' of 'Assign' Op requires l-value input

我该换什么?你知道吗


Tags: nameinpyselfmodelvaluelibpackages

热门问题