Как сохранить и загрузить выбранные переменные в tenorflow 2.0? - PullRequest
2 голосов
/ 20 марта 2019

Как сохранить выбранные переменные в tenorflow 2.0, показанном ниже, в файле и загрузить их в некоторые определенные переменные в другом коде?

class manyVariables:
    def __init__(self):
        self.initList = [None]*100
        for i in range(100):
            self.initList[i] = tf.Variable(tf.random.normal([5,5]))
        self.makeSomeMoreVariables()

    def makeSomeMoreVariables(self):
        self.moreList = [None]*10
        for i in range(10):
            self.moreList[i] = tf.Variable(tf.random.normal([3,3]))

    def saveVariables(self):
        # how to save self.initList's 3,55 and 60th elements and self.moreList's 4th element

1 Ответ

2 голосов
/ 20 марта 2019

В следующем коде я сохраняю массив переменных с именем в текстовом файле с именем по вашему выбору. Этот файл будет в той же папке, что и ваш файл Python. 'Wb' в функции open означает запись с усечением (таким образом, удаляя все, что было ранее в файле) и использует формат байтов. Я использую pickle для сохранения / разбора списка.

import pickle

    def saveVariables(self, variables): #where 'variables' is a list of variables
        with open("nameOfYourFile.txt", 'wb+') as file:
           pickle.dump(variables, file)

    def retrieveVariables(self, filename):
        variables = []
        with open(str(filename), 'rb') as file:
            variables = pickle.load(file)
        return variables

Чтобы сохранить конкретный материал в ваш файл, просто добавьте его в качестве аргумента переменных в saveVariables примерно так:

myVariables = [initList[2], initList[54], initList[59], moreList[3]]
saveVariables(myVariables)

Чтобы извлечь переменные из текстового файла с определенным именем:

myVariables = retrieveVariables("theNameOfYourFile.txt")
thirdEl = myVariables[0]
fiftyFifthEl = myVariables[1]
SixtiethEl = myVariables[2]
fourthEl = myVariables[3]

Вы можете добавить эти функции в любом месте класса.

Чтобы иметь доступ к initList / moreList в вашем примере, вы должны либо вернуть их из их функций (как я это сделал со списком variables), либо сделать их глобальными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...