张量流tf.列车保护器()不工作tf.B.层.完全连接()

2024-05-26 07:47:20 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我写了这个通用的TensorFlow代码,想要saverestore模型。但显然错误在于没有变量可保存。我做的一切都是按照官方的example做的。忽略除了最后一行以外的__init__方法,因为它只需要相关参数来训练模型,也没有语法错误。它产生的错误在代码下面给出。你知道吗

class Neural_Network(object): def __init__(self, numberOfLayers, nodes, activations, learningRate, optimiser = 'GradientDescent', regularizer = None, dropout = 0.5, initializer = tf.contrib.layers.xavier_initializer()): self.numberOfLayers = numberOfLayers self.nodes = nodes self.activations = activations self.learningRate = learningRate self.regularizer = regularizer self.dropout = dropout self.initializer = initializer if(optimiser == 'GradientDescent'): self.optimiser = tf.train.GradientDescentOptimizer(self.learningRate) elif(optimiser == 'AdamOptimiser'): self.optimiser = tf.train.AdamOptimizer(self.learningRate) self.saver = tf.train.Saver() def create_Neural_Net(self, numberOfFeatures): self.numberOfFeatures = numberOfFeatures self.X = tf.placeholder(dtype = tf.float32, shape = (None, self.numberOfFeatures), name = 'Input_Dataset') #self.output = None for i in range(0, self.numberOfLayers): if(i == 0): layer = tf.contrib.layers.fully_connected(self.X, self.nodes[i], activation_fn = self.activations[i], weights_initializer = self.initializer, biases_initializer = self.initializer) elif(i == self.numberOfLayers-1): self.output = tf.contrib.layers.fully_connected(layer, self.nodes[i], activation_fn = self.activations[i], weights_initializer = self.initializer, biases_initializer = self.initializer) else: layer = tf.contrib.layers.fully_connected(layer, self.nodes[i], activation_fn = self.activations[i], weights_initializer = self.initializer, biases_initializer = self.initializer) def train_Neural_Net(self, dataset, labels, epochs): entropy = tf.nn.softmax_cross_entropy_with_logits_v2(logits = self.output, labels = labels, name = 'cross_entropy') loss = tf.reduce_mean(entropy, name = 'loss') hypothesis = tf.nn.softmax(self.output) correct_preds = tf.equal(tf.argmax(hypothesis, 1), tf.argmax(labels, 1)) accuracy = tf.reduce_sum(tf.cast(correct_preds, tf.float32)) train_op = self.optimiser.minimize(loss) self.loss=[] self.accuracy = [] with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for i in range(0, epochs): _, l, acc = sess.run([train_op, loss, accuracy], feed_dict = {self.X:dataset}) print('Loss in epoch ' + str(i) + ' is: ' + str(l)) self.loss.append(l) self.accuracy.append(acc) self.saver.save(sess, './try.ckpt') return self.loss, self.accuracy

运行此代码为:

nn = Neural_Network(2, [20,3], [tf.nn.relu, tf.nn.relu], 0.001, optimiser = 'AdamOptimiser') nn.create_Neural_Net(4) nn.train_Neural_Net(dataset, labels, 1000)

它给出的错误是:

ValueError: No variables to save

那么这个代码有什么问题呢?我该怎么修?你知道吗


Tags: 代码selflabelstftrainnnnodesinitializer