• tensorflow-softmax


    之前在softmax多分类中讲到多用交叉熵作为损失函数,这里顺便写个例子,tensorlflow练手。

    # encoding:utf-8
    import tensorflow as tf
    import input_data
    
    ### softmax 回归
    
    # 自动下载安装数据集
    mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
    
    
    # 图片    28 * 28 = 784
    x=tf.placeholder('float',[None,784])    # 特征数 784
    # 初始化参数
    w=tf.Variable(tf.zeros([784,10]))       # 10是输出维度,0-9数字的独热编码
    b=tf.Variable(tf.zeros([10]))
    
    # 模型
    y=tf.nn.softmax(tf.matmul(x,w)+b)
    
    
    ### 训练模型
    y_=tf.placeholder('float',[None,10])     # 10维
    
    # 损失函数  交叉熵
    cross_entropy=-tf.reduce_sum(y_*tf.log(y))      # reduce_sum 计算张量的所有元素之和    所有图片的交叉熵综合
    
    # 优化算法 梯度下降
    train_step=tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)      # 0.01 学习率  最小化 损失函数
    
    # 初始化变量
    init=tf.initialize_all_variables()
    
    # 启动图  会话
    sess=tf.Session()
    sess.run(init)      # 初始化变量
    
    # 迭代,训练参数
    for i in range(1000):
        batch_xs, batch_ys = mnist.train.next_batch(100)            # 训练集
        sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
    
    
    # 模型评估 准确率
    correct_predict = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))       # 输出布尔值,即预测与真实是否一样
    accuracy = tf.reduce_mean(tf.cast(correct_predict, 'float'))        # 将布尔值转化成浮点数,然后求平均, 正确/总数
    print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))      # 测试集   0.9194
  • 相关阅读:
    Redis21:客户端与服务器端的通信与redis管道
    Redis20:keys、scan、bigkeys、查看key的存储方式
    Redis19:限流
    Redis18:分布式锁
    Redis17:cluster集群
    Redis16:两种redis集群解决方案:codis和cluster
    Android : 获取声卡信息的测试代码
    Android : 基于alsa库的音乐播放
    Android system :灯光系统_HAL_lights
    Android system :led_class驱动
  • 原文地址:https://www.cnblogs.com/yanshw/p/10460175.html
Copyright © 2020-2023  润新知