• TensorFlow.jl 基础使用
    • MNIST数字分类

    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)))