Я использую Keras и Tensorflow для обучения нейронной сети.С помощью функции обратного вызова с ранней остановкой я сохраняю файлы hdf5, содержащие веса и смещения:
file_path = "data/weights-improvement-{epoch:02d}-{val_loss:.2f}.hdf5"
save_best_callback = ModelCheckpoint(file_path, monitor='val_loss', verbose=1, save_best_only=True,
save_weights_only=False, mode='auto', period=1)
# model
visible = Input(shape=(36,))
x = Dense(40, activation='tanh')(visible)
x = Dense(45, activation='tanh')(x)
x = Dense(30, activation='tanh')(x)
x = Dense(55, activation='tanh')(x)
output = Dense(5, activation='tanh')(x)
Обычно я использую
weights_1 = model.layers[1].get_weights()[0]
biases_1 = model.layers[1].get_weights()[1]
для одного слоя.
Почему-тоВеса и смещения не могли быть сохранены, когда я запустил свой скрипт на ночь (что необычно, файл hdf5 не удалось создать).Теперь у меня осталось несколько файлов hdf5, из которых я хочу выбрать последний, который можно сохранить для загрузки моих весов и смещений.
Я хочу, чтобы матрица весов каждого слоя имела форму (#cells x #входы) и матрица смещения должна иметь форму (#cells x 1), тогда как для слоя j = 1 #inputs = 36 и для j> 1 входов = #cells (j-1).Затем эти матрицы должны храниться в виде пустых массивов.
Всего у меня есть 5 слоев, что должно дать мне 5 матриц веса и смещения.Я попытался загрузить hdf5-файл с помощью pandas:
import numpy as np
import pandas as pd
array = np.fromfile('data/weights-improvement-446-0.00.hdf5', dtype=float)
df_array = pd.DataFrame(array)
print(df_array)
, но это просто дает мне фрейм данных, состоящий из 1 столбца и m строк, где некоторые элементы имеют значение «NaN».Может кто-нибудь мне помочь?Заранее спасибо.