public void WriteAndReadGroupsWithDataset() { string filename = Path.Combine(folder, "testGroups.H5"); try { var fileId = Hdf5.CreateFile(filename); Assert.IsTrue(fileId > 0); var dset = dsets.First(); var groupId = H5G.create(fileId, Hdf5Utils.NormalizedName("/A")); ///B/C/D/E/F/G/H Hdf5.WriteDataset(groupId, Hdf5Utils.NormalizedName("test"), dset); var subGroupId = Hdf5.CreateOrOpenGroup(groupId, Hdf5Utils.NormalizedName("C")); var subGroupId2 = Hdf5.CreateOrOpenGroup(groupId, Hdf5Utils.NormalizedName("/D")); // will be saved at the root location dset = dsets.Skip(1).First(); Hdf5.WriteDataset(subGroupId, Hdf5Utils.NormalizedName("test2"), dset); Hdf5.CloseGroup(subGroupId); Hdf5.CloseGroup(subGroupId2); Hdf5.CloseGroup(groupId); groupId = H5G.create(fileId, Hdf5Utils.NormalizedName("/A/B")); ///B/C/D/E/F/G/H dset = dsets.Skip(1).First(); Hdf5.WriteDataset(groupId, Hdf5Utils.NormalizedName("test"), dset); Hdf5.CloseGroup(groupId); groupId = Hdf5.CreateGroupRecursively(fileId, Hdf5Utils.NormalizedName("A/B/C/D/E/F/I")); Hdf5.CloseGroup(groupId); Hdf5.CloseFile(fileId); fileId = Hdf5.OpenFile(filename); Assert.IsTrue(fileId > 0); fileId = Hdf5.OpenFile(filename); groupId = H5G.open(fileId, Hdf5Utils.NormalizedName("/A/B")); double[,] dset2 = (double[, ])Hdf5.ReadDataset <double>(groupId, Hdf5Utils.NormalizedName("test")).result; CompareDatasets(dset, dset2); Assert.IsTrue(Hdf5.CloseGroup(groupId) >= 0); groupId = H5G.open(fileId, Hdf5Utils.NormalizedName("/A/C")); dset2 = (double[, ])Hdf5.ReadDataset <double>(groupId, Hdf5Utils.NormalizedName("test2")).result; CompareDatasets(dset, dset2); Assert.IsTrue(Hdf5.CloseGroup(groupId) >= 0); bool same = dset == dset2; dset = dsets.First(); dset2 = (double[, ])Hdf5.ReadDataset <double>(fileId, Hdf5Utils.NormalizedName("/A/test")).result; CompareDatasets(dset, dset2); Assert.IsTrue(Hdf5Utils.ItemExists(fileId, Hdf5Utils.NormalizedName("A/B/C/D/E/F/I"), DataTypes.Hdf5ElementType.Dataset)); Assert.IsTrue(Hdf5.CloseFile(fileId) == 0); } catch (Exception ex) { CreateExceptionAssert(ex); } }
public static void save_weights_to_hdf5_group(long f, List <ILayer> layers) { List <string> layerName = new List <string>(); foreach (var layer in layers) { layerName.Add(layer.Name); } save_attributes_to_hdf5_group(f, "layer_names", layerName.ToArray()); Hdf5.WriteAttribute(f, "backend", "tensorflow"); Hdf5.WriteAttribute(f, "keras_version", "2.5.0"); long g = 0, crDataGroup = 0; List <IVariableV1> weights = new List <IVariableV1>(); //List<IVariableV1> weight_values = new List<IVariableV1>(); List <string> weight_names = new List <string>(); foreach (var layer in layers) { weight_names = new List <string>(); g = Hdf5.CreateOrOpenGroup(f, Hdf5Utils.NormalizedName(layer.Name)); weights = _legacy_weights(layer); //weight_values= keras.backend.batch_get_value(weights); foreach (var weight in weights) { weight_names.Add(weight.Name); } save_attributes_to_hdf5_group(g, "weight_names", weight_names.ToArray()); Tensor tensor = null; foreach (var(name, val) in zip(weight_names, weights)) { tensor = val.AsTensor(); if (name.IndexOf("/") > 1) { crDataGroup = Hdf5.CreateOrOpenGroup(g, Hdf5Utils.NormalizedName(name.Split('/')[0])); WriteDataset(crDataGroup, name.Split('/')[1], tensor); Hdf5.CloseGroup(crDataGroup); } else { WriteDataset(crDataGroup, name, tensor); } tensor = null; } Hdf5.CloseGroup(g); weight_names = null; } weights = null; // weight_values = null; }
public void WriteAndReadAttributeByPath() { string filename = Path.Combine(folder, "testAttributeByPath.H5"); string path = "/A/B/C/D/E/F/I"; string attributeValue = "test"; Hdf5.Settings.LowerCaseNaming = false; var fileId = Hdf5.CreateFile(filename); Assert.IsTrue(fileId > 0); var groupId = Hdf5.CreateGroupRecursively(fileId, Hdf5Utils.NormalizedName(path)); var result = Hdf5Utils.WriteAttributeByPath(filename, path, "VALID", attributeValue); Assert.IsTrue(result); var write = Hdf5Utils.ReadAttributeByPath(filename, path, "VALID"); Assert.IsTrue(write.success); Assert.IsTrue(write.value == attributeValue); Assert.IsTrue(H5G.close(groupId) == 0); Assert.IsTrue(Hdf5.CloseFile(fileId) == 0); }