#python #tensorflow #keras #recurrent-neural-network
#python #tensorflow #keras #рекуррентная нейронная сеть
Вопрос:
Я пытаюсь запустить свою первую модель машинного обучения. Однако я получаю сообщение об ошибке ниже.
return_sequences=True)) Ошибка TypeError: init() отсутствует 1 требуемый позиционный аргумент: ‘units’
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, LSTM, Dropout
model = Sequential()
model.add(LSTM(input_dim=1,
output_dim=50,
return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(100, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(output_dim=1))
model.add(Activation('linear'))
start = time.time()
model.compile(loss="mse", optimizer="rmsprop")
Поскольку в нем говорилось, что параметр units отсутствует, я также попробовал следующую строку,
model.add(LSTM(100,
input_dim=1,
output_dim=50,
return_sequences=True))
Затем получаю это сообщение об ошибке, но я не понимаю, почему это не появляется при моей первой попытке. Чего я не понимаю?
Ошибка TypeError: (‘Аргумент ключевого слова не понят:’, ‘input_dim’)
Ответ №1:
units
является первым параметром LSTM
, который представляет последнее измерение выходных данных на этом уровне. Это показывает первую ошибку, потому что ваш код не имеет units
при вашей первой попытке. units
удовлетворяет условию, так что при второй попытке отображается вторая ошибка.
В этом случае вы должны использовать input_shape
параметр, чтобы указать форму ввода первого слоя. Ваш первый LSTM
слой input_shape
должен содержать два данных ( timestep
и feature
, batch_size
по умолчанию заполнять не нужно), поскольку LSTM требует трехмерного ввода. Предполагая, что ваш временной шаг равен 10, ваш код должен быть изменен на следующий.
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, LSTM, Dropout,Activation
model = Sequential()
model.add(LSTM(units=100,input_shape=(10,1),return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(100, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(units=1))
model.add(Activation('linear'))
model.compile(loss="mse", optimizer="rmsprop")
print(model.summary())
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm (LSTM) (None, 10, 100) 40800
_________________________________________________________________
dropout (Dropout) (None, 10, 100) 0
_________________________________________________________________
lstm_1 (LSTM) (None, 100) 80400
_________________________________________________________________
dropout_1 (Dropout) (None, 100) 0
_________________________________________________________________
dense (Dense) (None, 1) 101
_________________________________________________________________
activation (Activation) (None, 1) 0
=================================================================
Total params: 121,301
Trainable params: 121,301
Non-trainable params: 0
_________________________________________________________________
Комментарии:
1. спасибо за четкий ответ, высоко ценится. Активация (‘linear’), из какой библиотеки активирована, поскольку мой код ее не распознает?
2. @mHelpMe
Activation
— это слой keras. Я добавил это в ответ.