我正在使用TensorFlow教程,该教程使用"怪异"格式上传数据.我想使用NumPy或pandas格式的数据,以便我可以将它与scikit-learn结果进行比较.
我从Kaggle获得了数字识别数据:https://www.kaggle.com/c/digit-recognizer/data .
这里是TensorFlow教程的代码(工作正常):
# Stuff from tensorflow tutorial
import tensorflow as tf
sess = tf.InteractiveSession()
x = tf.placeholder("float", shape=[None, 784])
y_ = tf.placeholder("float", shape=[None, 10])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
Run Code Online (Sandbox Code Playgroud)
在这里,我读取数据,去掉目标变量并将数据分成测试和训练数据集(这一切都正常):
# Read dataframe from training data
csvfile='train.csv'
from pandas import DataFrame, read_csv
df = read_csv(csvfile)
# Strip off the target data and make it a separate …
Run Code Online (Sandbox Code Playgroud) 在TensorFlow中初始化变量的标准方法是
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
Run Code Online (Sandbox Code Playgroud)
在运行了一段时间的学习后,我创建了一组新的变量,但是一旦我初始化它们,它就会重置我现有的所有变量.目前我的方法是保存我需要的所有变量,然后在tf.initalize_all_variables调用之后重新应用它们.这有效,但有点丑陋和笨重.我在文档中找不到这样的东西......
有没有人知道刚刚初始化未初始化变量的任何好方法?
我正试图通过拾取TensorFlow中的模型训练来重新开始.我想使用最近添加的(0.12 +我认为)import_meta_graph()
,以便不重建图形.
我见过这方面的解决方案,例如Tensorflow:如何保存/恢复模型?,但是我遇到了AdamOptimizer的问题,特别是我得到了一个ValueError: cannot add op with name <my weights variable name>/Adam as that name is already used
错误.这可以通过初始化来修复,但我的模型值会被清除!
还有其他答案和一些完整的例子,但它们似乎总是较旧,因此不包括较新的import_meta_graph()
方法,或者没有非张量优化器.我能找到的最接近的问题是tensorflow:保存和恢复会话,但没有最终的明确解决方案,这个例子非常复杂.
理想情况下,我想要一个简单的可运行示例从头开始,停止,然后再次拾起.我有一些有用的东西(下图),但也想知道我是否遗漏了什么.当然,我不是唯一一个这样做的人吗?
我从一个保存的模型加载,我希望能够重置一个tensorflow优化器,如Adam Optimizer.理想情况如下:
sess.run([tf.initialize_variables(Adamopt)])
Run Code Online (Sandbox Code Playgroud)
要么
sess.run([Adamopt.reset])
Run Code Online (Sandbox Code Playgroud)
我试过寻找答案,但还没有找到任何办法.以下是我发现的不解决问题的方法:https: //github.com/tensorflow/tensorflow/issues/634
我基本上只想要一种方法来重置Adam Optimizer中的"slot"变量.
谢谢
编辑:尝试了几件事之后,我在代码中添加了以下内容:
with tf.Session(graph=self.graph) as session:
session.run(tf.initialize_all_variables())
try:
session.run(tf.assert_variables_initialized())
except tf.errors.FailedPreconditionError:
raise RuntimeError("Not all variables initialized!")
Run Code Online (Sandbox Code Playgroud)
现在,偶尔会失败,即tf.assert_variables_initialized()
会tf.initialize_all_variables()
在执行之前立即引发FailedPreconditionError .有谁知道这怎么会发生?
原始问题:
背景
我在通过Tensorflow创建的基本神经网络上使用GradientDescentOptimizer运行交叉验证(CV)超参数搜索.在看似随机的时刻,我得到了一个FailedPreconditionError,用于不同的变量.例如(帖子末尾的完整堆栈跟踪):
FailedPreconditionError: Attempting to use uninitialized value Variable_5
[[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/gpu:0"](Variable_5)]]
Run Code Online (Sandbox Code Playgroud)
有些跑步失败的速度相当快,有些跑步失败了 - 其中一个跑了15个小时没有问题.我在多个GPU上并行运行 - 不是优化本身,而是每个CV折叠.
我检查了什么
从这个和这篇文章我明白,当尝试使用尚未初始化的变量时会发生此错误tf.initialize_all_variables()
.但是,我99%肯定我正在这样做(如果没有,我希望它总是失败) - 我将在下面发布代码.
该API文档说,
在运行在初始化之前读取tf.Variable的操作时,通常会引发此异常.
"最常见的"表明它也可以在不同的场景中提出.所以,现在主要的问题是:
问题:是否存在可能引发此异常的其他情况,它们是什么?
码
MLP课程:
class MLP(object):
def __init__(self, n_in, hidden_config, n_out, optimizer, f_transfer=tf.nn.tanh, f_loss=mean_squared_error,
f_out=tf.identity, seed=None, global_step=None, graph=None, dropout_keep_ratio=1):
self.graph …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Adagrad优化器构建CNN,但我收到以下错误.
tensorflow.python.framework.errors.FailedPreconditionError:试图使用未初始化值Variable_7/Adadelta
[[Node:Adadelta/update_Variable_7/ApplyAdadelta = ApplyAdadelta [T = DT_FLOAT,_class = ["loc:@ Variable_7"],use_locking = false,_device ="/ job:localhost/replica:0/task:0/cpu:0 "](Variable_7,Variable_7/Adadelta,Variable_7/Adadelta_1,Adadelta/lr,Adadelta/rho,Adadelta/epsilon,gradients/add_3_grad/tuple/control_dependency_1)]]由op u'Adadelta/update_Variable_7/ApplyAdadelta'引起,
optimizer = tf.train.AdadeltaOptimizer(learning_rate).minimize(cross_entropy)
我尝试在adagrad语句之后重新初始化会话变量,如本文所述,但这也没有帮助.
我怎样才能避免这个错误?谢谢.
import tensorflow as tf
import numpy
from tensorflow.examples.tutorials.mnist import input_data
def conv2d(x, W):
return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
def max_pool_2x2(x):
return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],
strides=[1, 2, 2, 1], padding='SAME')
def weight_variable(shape):
initial = tf.truncated_normal(shape, stddev=0.1)
return tf.Variable(initial)
def bias_variable(shape):
initial = tf.constant(0.1, shape=shape)
return tf.Variable(initial)
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)
# Parameters
learning_rate …
Run Code Online (Sandbox Code Playgroud)