【问题标题】:TensorFlow, Julia // Node name already exists in the GraphTensorFlow, Julia // 节点名称已经存在于图中
【发布时间】:2018-04-09 04:21:50
【问题描述】:

我正在将 TensorFlow 与 Julia 一起使用,我想使用以下内容来简化表达式:

cross_entropy = nn.sparse_softmax_cross_entropy_with_logits( logits, labels) 

optimizer = train.GradientDescentOptimizer(learning_rate)

train_op = train.minimize(optimizer,reduce_mean(cross_entropy))

我有以下错误:

 ERROR: Tensorflow error: Status: Node name 'gradients/reduce_grad/Reshape' already exists in the Graph

Stacktrace:
 [1] check_status at /home/jabou/.julia/v0.6/TensorFlow/src/core.jl:459 [inlined]
 [2] import_graph_def(::TensorFlow.Graph, ::Array{UInt8,1}, ::TensorFlow.GraphImportOptions) at /home/jabou/.julia/v0.6/TensorFlow/src/core.jl:1680
 [3] import_graph_def(::TensorFlow.Graph, ::TensorFlow.tensorflow.GraphDef, ::TensorFlow.GraphImportOptions) at /home/jabou/.julia/v0.6/TensorFlow/src/core.jl:1690
 [4] extend_graph(::TensorFlow.Graph, ::Array{Any,1}) at /home/jabou/.julia/v0.6/TensorFlow/src/core.jl:427
 [5] extend_graph(::Array{Any,1}) at /home/jabou/.julia/v0.6/TensorFlow/src/core.jl:291
 [6] gradients(::TensorFlow.Tensor{Float32}, ::Array{Any,1}, ::Void) at /home/jabou/.julia/v0.6/TensorFlow/src/core.jl:1583
 [7] gradients(::TensorFlow.Tensor{Float32}, ::Array{Any,1}) at /home/jabou/.julia/v0.6/TensorFlow/src/core.jl:1575
 [8] compute_gradients(::TensorFlow.train.GradientDescentOptimizer, ::TensorFlow.Tensor{Float32}, ::Void) at /home/jabou/.julia/v0.6/TensorFlow/src/train.jl:48
 [9] #minimize#1(::Void, ::Void, ::Void, ::Function, ::TensorFlow.train.GradientDescentOptimizer, ::TensorFlow.Tensor{Float32}) at /home/jabou/.julia/v0.6/TensorFlow/src/train.jl:40
 [10] minimize(::TensorFlow.train.GradientDescentOptimizer, ::TensorFlow.Tensor{Float32}) at /home/jabou/.julia/v0.6/TensorFlow/src/train.jl:37

在python中有避免错误的指令:tf.reset_default_graph(),但在Julia中没有类似的命令,我向GitHub询问:https://github.com/malmaud/TensorFlow.jl/issues/374

你能帮帮我吗?

编辑

有时,我会收到有关 python 版本的警告。我使用指示的命令升级了版本,但它不起作用。也许问题就在这里?

WARNING: Your Python TensorFlow client version (1.5.0) is below the TensorFlow backend version (1.6.0). This can cause various errors. Please upgrade your Python TensorFlow installation and then restart Julia.
You can upgrade by calling `using Conda; Conda.update();` from Julia.

这是我的代码:

ENV["CUDA_VISIBLE_DEVICES"] = "0" # It is to use the GPU

using TensorFlow
using Distributions

rng = MersenneTwister(1235) 

function weight_variable(shape)
   initial = map(Float32, rand(Normal(0, .001), shape...))
   return Variable(initial)
end

function bias_variable(shape)
   initial = fill(Float32(.1), shape...)
   return Variable(initial)
end


# Inputs

num_pixels = 12

num_classes = 10

x = placeholder(Float32, shape=[nothing, num_pixels])

Weight = weight_variable([num_pixels,num_classes]) 

biases = bias_variable([num_classes]) 

logits = x*Weight  + biases

labels = rand(rng,0:9,10) # Random labels for the test

cross_entropy = nn.sparse_softmax_cross_entropy_with_logits( logits = logits, labels = labels)


cross_entropy_reduce = reduce_mean(cross_entropy)

optimizer = train.GradientDescentOptimizer(0.001)

train_op = train.minimize(optimizer,cross_entropy_reduce) # Here is the crash

我在 IDE 中使用 atom,使用 julia 0.6.2。

谢谢。

【问题讨论】:

  • 请发布一个MWE,可以执行得到你的错误
  • 我用我的代码编辑了我的帖子...
  • 我无法重现该错误。以上在我的机器上运行良好。
  • 所以,我添加了堆栈跟踪和我有时在运行程序时遇到的警告......也许有一些信息。
  • 这是 MWE 的解释,stackoverflow.com/help/mcve 如果这是最小的,我会感到惊讶。请提供重现错误的较小代码。 (通过制作 MWE,您可能会发现自己出了什么问题。)

标签: tensorflow julia


【解决方案1】:

我在这个例子中遇到了同样的问题:

using TensorFlow

sess = Session(Graph())
W = Variable([1.0, 1.0])
loss = nn.l2_loss(W)
optimizer = train.GradientDescentOptimizer(0.5)
train_step = train.minimize(optimizer, loss) # crash

好像是版本问题。 TensorFlow 1.5 和 1.6 失败并出现与您相同的错误。但是使用 TensorFlow 1.4.0 可以正常工作。我也试过你的例子,一切看起来都不错。

确保文件/home/name/.julia/v0.6/TensorFlow/deps/build.jl中的第四行和第五行是

const cur_version = "1.4.0"
const cur_py_version = "1.4.0"

并在 julia 命令行中使用 Pkg.build("TensorFlow") 重建包。 如果还是不行,可以尝试卸载重新安装包。

【讨论】:

  • 您好,感谢您的帮助,但它不起作用...我有同样的错误。当我尝试重新安装包时,它说它不知道包TensorFlow(拼写正确,我检查过)......所以,我将我的保存包粘贴到 .julia 然后我用版本 1.4.0 重建
  • 我的问题是配置:我配置的都是TensorFlow 1.6。因此,我下载了 1.4.0 版本并重新启动配置(使用 ./configure)。但我无法编译文件夹 tensorflow-v1.4.0 中的 libtensorflow.so 文件(通常,我将此文件粘贴到 .julia/v0.6/TensorFlow/deps/usr/bin 中)之后,我无法使用我的 gpu 并更改配置...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
相关资源
最近更新 更多