我正在尝试根据评论构建电影收视率预测指标。我正在使用带有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%,并且准确度波动很大。
请帮助。谢谢。
答案 0 :(得分:2)
learning_rate
不是model.compile
的参数,它是优化程序的参数(通常称为lr
)。只需从通话中删除该参数即可。
答案 1 :(得分:0)
每次将参数传递给错误的函数时,都可能会遇到此类错误。我记得曾经将call_back参数传递给编译器,而不是传递给model.fit。
因此请检查您的功能并确保您传递正确的配音。