Здесь существует простое решение задачи. Эта команда:
script.dir <- dirname(sys.frame(1)$ofile)
возвращает путь к текущему файлу скрипта. Он работает после сохранения сценария.
Часть 1: Проблема действительно в типе данных вашего ввода. По умолчанию ваша модель keras ожидает float32, но вы передаете float64. Вы можете либо изменить dtype модели, либо изменить ввод на float32.
Чтобы изменить свою модель:
def make_model():
net = tf.keras.Sequential()
net.add(tf.keras.layers.Dense(4, activation='relu', dtype='float32'))
net.add(tf.keras.layers.Dense(4, activation='relu'))
net.add(tf.keras.layers.Dense(1))
return net
Чтобы изменить ввод: y = y.astype('float32')
Часть 2: Вам необходимо вызвать функцию, которая вычисляет вашу модель (то есть model(data)
) под tf.GradientTape (). Например, вы можете заменить ваш метод compute_loss
следующим:
def compute_loss(model, x, y):
pred = model(x)
return tf.reduce_mean(tf.square(tf.subtract(pred, y)))