def ExpectToken(fd, token):
    """ ExpectToken tries to read in the given token
    """
    tok = read_token(fd)
    if tok == token:
        return True
    else:
        return False
 def Read(self, fd):
     ExpectToken(fd, "<NnetIo>")
     self.name = read_token(fd)
     self.size, self.indexes = ReadIndexVector(fd)
     self.features = read_matrix_or_vector(fd,
                                           endian='<',
                                           return_size=False,
                                           read_binary_flag=False)
     ExpectToken(fd, "</NnetIo>")
    def Read(self, fd):
        '''
        Read ChainSupervision data
        '''
        ExpectToken(fd, "<NnetChainSup>")
        self.name = read_token(fd)
        self.size, self.indexes = ReadIndexVector(fd)
        self.supervision = Supervision()
        self.supervision.Read(fd)
        token = read_token(fd)

        if token != "</NnetChainSup>":
            assert token == "<DW>" or token == "<DW2>"
            if token == "<DW>":
                self.deriv_weights = ReadVectorAsChar(fd, 1)
            else:
                self.deriv_weights = ReadVectorAsFloat(fd)

        ExpectToken(fd, "</NnetChainSup>")
def ReadVectorAsFloat(fd, binary=True):
    my_token = read_token(fd)
    if my_token == "FV":
        size = ReadBasicType(fd, 'int')
        deriv_weights = np.frombuffer(fd.read(4 * size), dtype=np.float32)
    elif my_token == "DV":
        size = ReadBasicType(fd, 'int')
        deriv_weights = np.frombuffer(fd.read(4 * size), dtype=np.float64)
    else:
        print("ReadVectorAsFloat error, no this type")
        sys.exit(1)

    return list(deriv_weights)
def ReadKey(fd):
    key = read_token(fd, set((' ', '\t', '\n')))
    return key
예제 #6
0
 def Read(self, fp):
     self._key = read_token(fp)
     if self._key is None:
         return self._key
     Fst.Read(self, fp)
     return self._key