有关使用@ tf.function在Tensorflow 2.0中进行培训的问题

我正在考虑在Tensorflow 2.0中实现一个简单的模型,同时实现新的@ tf.function装饰器函数以及删除tf.Session()。

截至目前,我使用feedforward()创建具有单独名称范围的权重和偏差:

def feedforward(self,input,output,name_scope):

    with tf.variable_scope(name_scope,reuse=tf.AUTO_REUSE) as scope:

        self.W = tf.get_variable('weights',shape=(input.shape[1],output),initializer=tf.random_normal_initializer(0,0.01),dtype=tf.float32)

        self.b = tf.get_variable('biases',shape=(output),initializer=tf.constant_initializer(0,dtype=tf.float32)

        z = tf.matmul(self.W,input) + self.biases
        activations = sigmoid(z)

    return activations

我使用define_layer函数编译图层:

@tf.function
def define_layers():
    self.layer_1 = self.feedforward(self.features,self.l1_dim,'layer_1')
    self.layer_2 = self.feedforward(self.layer_1,self.l2_dim,'layer_2')
    self.final_layer = self.feedforward(self.layer_2,1,'final_layer')

最后,我使用preamble()创建损失和优化器:

def preamble():
    self.loss = //
    self.labels * -math.log(self.final_layer) + (1 - self.labels) //
        * -math.log(1 - self.final_layer)

    self.optimizer = //
    tf.train.AdamOptimizer(learning_rate=0.01).minimize(self.loss)

    return self.loss

所以我的问题是:如何在不使用tf.Session()的情况下使用train()实施培训?举一个简单的例子,我目前有:

@tf.function
def train():
    for epoch in range(100):
        for (x,y) in (self.features,self.labels):
            loss = preamble()

        if epoch % 50 == 0:
            print("Current Epoch is {:03d} with loss of {:.3f}".format(epoch,self.loss))

对于此应用程序,我不想使用任何tf.metrics或keras,因为我想使用低级API来全部开发。

还有一个问题,我是否正确使用@ tf.function()装饰器?我根据Tensorflow Guide使用它来定义我的图层,但不确定在哪种情况下合适或不合适。

samdd 回答:有关使用@ tf.function在Tensorflow 2.0中进行培训的问题

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3127499.html

大家都在问