Некоторые ключи в session_kwargs в настоящее время не поддерживаются:% s ', dict_keys ([' learning_rate ']) - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь построить предсказатель рейтинга фильма на основе отзывов. Я использую Keras с тензорным потоком в качестве бэкэнда. Я скачал Tensorflow и керас, используя Anaconda. X и y в коде являются массивами. Я пытаюсь запустить следующий код,

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.

Если я удаляю встраивание и слой GlobalAveragePooling1D из модели, он работает, но дает очень низкую точность - всего 27%, а точность сильно колеблется.

Пожалуйста, помогите. Спасибо.

1 Ответ

0 голосов
/ 03 ноября 2018

learning_rate не является параметром model.compile, это параметр для оптимизатора (обычно называется lr). Просто удалите этот параметр из вашего звонка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...