目前不支持session_kwargs中的某些键:%s',dict_keys(['learning_rate'])

时间:2018-11-03 16:18:28

标签: tensorflow keras text-processing

我正在尝试根据评论构建电影收视率预测指标。我正在使用带有tensorflow的Keras作为后端。我使用Anaconda下载了Tensorflow和keras。代码中的X和y是numpy数组。我正在尝试运行以下代码,

import tensorflow as tf
import keras
from keras.models import Sequential
from keras.callbacks import History
from keras.layers import Input, Dense, Dropout
from keras.layers import BatchNormalization
from keras.layers.core import Flatten
from keras.layers import Embedding
model = Sequential()

model.add(keras.layers.Embedding(vocab_size, 10))
model.add(keras.layers.GlobalAveragePooling1D())
model.add(Dense(17, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation = 'relu'))
model.add(Dropout(0.5))


model.add(Dense(5, activation = 'softmax'))
optimizer = keras.optimizers.sgd(lr = 0.1)

model.compile(loss = "categorical_crossentropy", optimizer = optimizer, metrics = ['accuracy'], learning_rate = 0.2)
history = model.fit(X_train_indices, y_train_oh,batch_size = 128,epochs = 25, verbose = 1)
print(model.summary())

我收到以下错误消息,

    ValueError                                Traceback (most recent call last)
<ipython-input-47-a638769cab16> in <module>()
----> 1 history = model.fit(X_train_indices, y_train_oh,batch_size = 128,epochs = 25, verbose = 1)
      2 print(model.summary())

~/anaconda3/lib/python3.6/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)
   1006         else:
   1007             ins = x + y + sample_weights
-> 1008         self._make_train_function()
   1009         f = self.train_function
   1010 

~/anaconda3/lib/python3.6/site-packages/keras/engine/training.py in _make_train_function(self)
    506                     updates=updates,
    507                     name='train_function',
--> 508                     **self._function_kwargs)
    509 
    510     def _make_test_function(self):

~/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py in function(inputs, outputs, updates, **kwargs)
   2693                 msg = 'Invalid argument "%s" passed to K.function with TensorFlow backend' % key
   2694                 raise ValueError(msg)
-> 2695     return Function(inputs, outputs, updates=updates, **kwargs)
   2696 
   2697 

~/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py in __init__(self, inputs, outputs, updates, name, **session_kwargs)
   2540             raise ValueError('Some keys in session_kwargs are not '
   2541                              'supported at this '
-> 2542                              'time: %s', session_kwargs.keys())
   2543         self._callable_fn = None
   2544         self._feed_arrays = None

ValueError: ('Some keys in session_kwargs are not supported at this time: %s', dict_keys(['learning_rate']))

输入X_train_indices的形状为6396x28,y_train_oh的形状为6396x5。

如果我从模型中删除了embedding和GlobalAveragePooling1D层,则它可以工作,但准确度很差,仅为27%,并且准确度波动很大。

请帮助。谢谢。

2 个答案:

答案 0 :(得分:2)

learning_rate不是model.compile的参数,它是优化程序的参数(通常称为lr)。只需从通话中删除该参数即可。

答案 1 :(得分:0)

每次将参数传递给错误的函数时,都可能会遇到此类错误。我记得曾经将call_back参数传递给编译器,而不是传递给model.fit。

因此请检查您的功能并确保您传递正确的配音。