Я новичок в машинном обучении. Я пытаюсь создать простую RNN в Tensorflow 2.0, но наткнулся на препятствие. Я свел его к минимальному примеру, который воспроизводит проблему. Цель этого минимального примера состоит в том, чтобы RNN научилась многократно выводить 1.0.
import os
import sys
import math
from random import shuffle
import numpy as np
import tensorflow as tf
from time import time as time
epochs = 200
batch_size = 32
chunk_length = 64
features = 10
def main():
train_dataset = np.zeros([batch_size, chunk_length, features]) + 1
test_dataset = np.zeros([batch_size, chunk_length, features]) + 1
with tf.device('/gpu:0'):
model = tf.keras.Sequential([
tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(
64, return_sequences=True)),
tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32)),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(loss='mean_absolute_error',
optimizer='adam',
metrics=['accuracy'])
history = model.fit(train_dataset, batch_size=batch_size, epochs=epochs)
test_loss, test_acc = model.evaluate(test_dataset)
print('Test Loss: {}'.format(test_loss))
print('Test Accuracy: {}'.format(test_acc))
if __name__ == '__main__':
main()
Когда я запускаю это, я получаю ValueError: Arguments and signature arguments do not match: 56 57
. Если я закомментирую последний слой, я получу ValueError: Arguments and signature arguments do not match: 50 51
. Если я закомментирую последние два слоя, я получу ValueError: Arguments and signature arguments do not match: 44 45
.
Я попытался изменить все предоставляемые мной константы (эпохи, размер_пакета, длина_груба и функции), но они не повлияли на ошибку. Я также попытался удалить поэлементное добавление 1 к массивам numpy, но это тоже не повлияло.
Это ошибка в TensorFlow или я делаю глупость?