Stack Overflow на русском Asked by Alihan Urumov on December 30, 2021
Добрый день) Снова нужна ваша помощь. Я пару дней копался пять раз переписал код. читаю примеры с официального сайта и много не работает в новой версии тензорфлоу. постоянно что то переделывают. Вот собрал кое как код который работает) Но тут линейная регрессия с одной переменной. Мне нужно переделать его чтоб регрессия учитывала все переменные. 82 входа получается и один выход. скрин таблицы приведу тоже. Первая колонка входные данные вторая выходные. строка – одна итерация
Да и код кажется не продуктивным и не оптимизированным. копаюсь изучаю функции, но далеко до совершенства))
Ну и еще валидационную выборку включил, пока код не написал к его использованию, для подгона параметров после тренировочной(
# Задание размерности модели в функции
def linear_model():
model = keras.Sequential([
layers.Dense(1, use_bias=True, input_shape=(1,), name='layer')
])
# Задание оптимизатора
optimizer = tf.keras.optimizers.Adam(
learning_rate=0.01, beta_1=0.9, beta_2=0.99, epsilon=1e-05, amsgrad=False,
name='Adam')
# Задание параметров модели
model.compile(loss='mse', optimizer=optimizer, metrics=['mae','mse'])
return model
# Создание модели ранее созданой функцией
model = linear_model()
# Задание параметров Нйероной сети
n_epochs = 4000
batch_size = 256
n_idle_epochs = 100
n_epochs_log = 200
n_samples_save = n_epochs_log * trainInput.shape[0]
print('Checkpoint is saved for each {} samples'.format(n_samples_save))
# Механихм остановки обучение при отсутствии дальнейшего прогресса обучения
earlyStopping = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=n_idle_epochs,
min_delta=0.001)
# Создание настраиваемого обратного вызова для печати журнала после определенного количества эпох
predictions_list = []
class NEPOCHLogger(tf.keras.callbacks.Callback):
def __init__(self,per_epoch=100):
# количество пакетов для ожидания перед выводом потерь
self.seen = 0
self.per_epoch = per_epoch
def on_epoch_end(self, epoch, logs=None):
if epoch % self.per_epoch == 0:
print('Epoch {}, loss {:.2f}, val_loss {:.2f}, mae {:.2f}, val_mae {:.2f}, mse {:.2f}, val_mse {:.2f}'
.format(epoch, logs['loss'], logs['val_loss'],logs['mae'], logs['val_mae'],logs['mse'], logs['val_mse']))
# Вызов объекта
log_display = NEPOCHLogger(per_epoch=n_epochs_log)
# Включаем эпоху в имя файла
import os
checkpoint_path = "training/cp-{epoch:05d}.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)
# Создаем обратный вызов, который сохраняет веса модели
checkpointCallback = tf.keras.callbacks.ModelCheckpoint(
filepath=checkpoint_path,
verbose=1,
save_weights_only=True,
save_freq=n_samples_save)
# Сохроняем веса
model.save_weights(checkpoint_path.format(epoch=0))
# Определяем обратный вызов Keras TensorBoard
logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)
history = model.fit(
trainInput, trainTarget, batch_size=batch_size,
epochs=n_epochs, validation_split = 0.1, verbose=0, callbacks=
[earlyStopping,log_display,tensorboard_callback,checkpointCallback])
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP