我正在尝试通过在h5文件中的数据集上应用某些(one_hot_bit)函数来修改模型的权重,然后使用新的权重加载模型。我终于找到了如何在h5文件中的不同数据集形状上应用mu函数的方法。问题是关闭文件并尝试重新打开它并打印任何数据集后,将打印原始数据集值,而不是修改后的值。 这是代码
f1 = h5py.File('/content/model_weights.h5', 'r') # open the file
for dset in traverse_datasets('/content/model_weights.h5'):
dataset1 = np.array(hdf.get(dset))
for x in np.nditer(dataset1, op_flags=['writeonly']):
x[...]= one_hot_bit_val(x)
print(dataset1)
f1.close()
traverse_datasets是在h5文件中查找数据集路径,而one_hot_bit_val()是我修改权重的函数。我在循环时打印每个数据集,并且打印的值正确。这是我在关闭文件后尝试重新打印该文件的情况,如下所示:
f1 = h5py.File('/content/model_weights.h5', 'r') # open the file
dataset1 = np.array(f1.get('/conv2d_1/conv2d_1/bias:0'))
print(dataset1)
在应用one_hot_bit函数之前,数据集1具有原始值。