TensorFlow.jl 基础使用

  1. using TensorFlow
  2.  
  3. # 定义一个 Session
  4. sess = TensorFlow.Session()
  5.  
  6. # 定义一个常量和变量
  7. x = TensorFlow.constant([1])
  8. y = TensorFlow.Variable([2])
  9.  
  10. # 定义一个计算
  11. w = x + y
  12.  
  13. # 执行计算过程
  14. run(sess, TensorFlow.global_variables_initializer())
  15. res = run(sess, w)
  16.  
  17. # 输出结果
  18. println(res)

MNIST数字分类

这个例子来自于 TensorFlow.jl 文档 ,可以用于对比 python 版本的 API.

  1. # 使用自带例子中的 mnist_loader.jl 加载数据
  2. include(Pkg.dir("TensorFlow", "examples", "mnist_loader.jl"))
  3. loader = DataLoader()
  4.  
  5. # 定义一个 Session
  6. using TensorFlow
  7. sess = Session()
  8.  
  9.  
  10. # 构建 softmax 回归模型
  11. x = placeholder(Float32)
  12. y_ = placeholder(Float32)
  13. W = Variable(zeros(Float32, 784, 10))
  14. b = Variable(zeros(Float32, 10))
  15.  
  16. run(sess, global_variables_initializer())
  17.  
  18. # 预测类和损失函数
  19. y = nn.softmax(x*W + b)
  20. cross_entropy = reduce_mean(-reduce_sum(y_ .* log(y), axis=[2]))
  21.  
  22. # 开始训练模型
  23. train_step = train.minimize(train.GradientDescentOptimizer(.00001), cross_entropy)
  24. for i in 1:1000
  25. batch = next_batch(loader, 100)
  26. run(sess, train_step, Dict(x=>batch[1], y_=>batch[2]))
  27. end
  28.  
  29. # 查看结果并评估模型
  30. correct_prediction = indmax(y, 2) .== indmax(y_, 2)
  31. accuracy=reduce_mean(cast(correct_prediction, Float32))
  32. testx, testy = load_test_set()
  33.  
  34. println(run(sess, accuracy, Dict(x=>testx, y_=>testy)))