Я пытаюсь построить предсказатель рейтинга фильма на основе отзывов. Я использую 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%, а точность сильно колеблется.
Пожалуйста, помогите. Спасибо.