遍历h5文件中的数据集,但更改不会保存

时间:2019-12-04 01:45:53

标签: python python-3.x numpy conv-neural-network h5py

我正在尝试通过在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具有原始值。

0 个答案:

没有答案