Почему моя текущая нейронная сеть выдает ошибку? - PullRequest
0 голосов
/ 08 февраля 2019

Здравствуйте, я получаю эту ошибку значения при создании рекуррентной нейронной сети, которая воспроизводит cartpole с использованием openaigym -

Traceback (most recent call last):
  File "C:/Users/Tejas/Desktop/ML Laboratory/Deep Learning/Neural Networks/4. Sentdex/Part - 3/Gym.py", line 147, in train_model
    model.fit(X, y, batch_size=64, epochs = 5)

  File "C:\Users\Tejas\Anaconda3\envs\tensorflow_gpuenv\lib\site-packages\keras\engine\training.py", line 952, in fit
    batch_size=batch_size)

  File "C:\Users\Tejas\Anaconda3\envs\tensorflow_gpuenv\lib\site-packages\keras\engine\training.py", line 789, in _standardize_user_data
    exception_prefix='target')

  File "C:\Users\Tejas\Anaconda3\envs\tensorflow_gpuenv\lib\site-packages\keras\engine\training_utils.py", line 102, in standardize_input_data
    str(len(data)) + ' arrays: ' + str(data)[:200] + '...')

ValueError: Error when checking model target: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 19570 arrays: [array([[0],
       [1]]), array([[1],
       [0]]), array([[0],
       [1]]), array([[1],
       [0]]), array([[1],
       [0]]), array([[1],
       [0]]), array([[1],
       [0]]), array([[0],
     ...

Вот моя модель рекуррентной нейронной сети, которую я сделал.Я думаю, что некоторые изменения должны быть сделаны в определении, которое должно быть сделано здесь -

def neural_network_model(input_size):
    model = Sequential()
    model.add(CuDNNLSTM(128, input_shape=(input_size, 1), return_sequences=True))
    model.add(Dropout(0.8))

    model.add(CuDNNLSTM(256, return_sequences=True))
    model.add(Dropout(0.8))

    model.add(CuDNNLSTM(512))
    model.add(Dropout(0.8))

    model.add(Dense(128, activation='relu'))
    model.add(Dropout(0.8))

    model.add(Dense(2, activation='softmax'))
    return model

И затем обучение модели, которую выполняет эта функция -

def train_model(training_data, model=False):

    X = np.array([i[0] for i in training_data]).reshape(-1,len(training_data[0][0]),1)
    y = [i[1] for i in training_data]
    print(len(X[0]))
    if not model:
        model = neural_network_model(input_size = len(X[0]))
        model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
        model.fit(X, y, batch_size=64, epochs = 5)
    return model.

Я могу 'Я не понимаю, почему это дает мне эту ошибку.Я пытался изменить форму ввода и многое другое, но ни одна из них не решает мою проблему.Если вам нужен полный код, если вы считаете, что он будет вам полезен, вы можете взять его здесь - Полный код

1 Ответ

0 голосов
/ 08 февраля 2019

Ваша цель y - это список, но он должен быть пустым массивом.Попробуйте с y = np.array(y) перед установкой вашей модели.

...