简介 目录 评价 推荐
  • 立影bobby 2019-12-16
    留痕迹
    0赞 · 0采集
  • MariaBrown 2019-08-23

    1.虽然神经元模型简单,但是花在数据处理和训练模型上的时间也不少。在多分类时重用这部分代码,只要修改模型即可。

    2.修改模型(多个神经元(10个)多分类实现逻辑斯蒂回归):(单层神经网络:10个神经元)

    (做修改的地方)

     for filename in filenames:

                data, labels = load_data(filename)

                # 不需要在做filter

                all_data.append(data)

                all_labels.append(labels)

     

    # [None], y:label,[0,5,6,3,...]

    y = tf.placeholder(tf.int64, [None])     

     

    # (3072, 10)

    w = tf.get_variable('w', [x.get_shape()[-1], 10],   # 多分类

                       initializer=tf.random_normal_initializer(0, 1))   #initializer表示初始化,这里使用正态分布,均值为0,方差为1

    # (10, )

    b = tf.get_variable('b', [10],

                       initializer=tf.constant_initializer(0.0))   # b使用常量初始化

    # get_variable表示获取变量,如果已经定义好了就使用,如果没有就定义

     

    # [None, 3072] * [3072, 10] = [None, 10]

    y_ = tf.matmul(x, w) + b

     

    # mean square loss

    '''

    # 因为是多分类,使用softmax

    # course:1+e^x

    # api:e^x/sum(e^x)

    # 归一化

    # p_y:每个样本都是一个分布,10个值加起来等于1,[[0.01,0.9,...0.03], []...]

    p_y = tf.nn.softmax(y_)

    # 多分类的loss,可以使用one-hot编码把y也变成一个分布

    # 5 -> [0,0,0,0,0,1,0,0,0,0]

    y_one_hot = tf.one_hot(y, 10, dtype=tf.float32)

    loss = tf.reduce_mean(tf.square(y_one_hot - p_y))   #  类型不一致需要变换

    '''

     

    loss = tf.losses.sparse_softmax_cross_entropy(labels=y, logits=y_)

    # y_ -> softmax

    # y -> one_hot

    # loss = ylogy_

     

    # 得到的是index,是一个int值

    predict = tf.argmax(y_, 1)

    # [1, 0, 1, 1, 0, 1,...]

    correct_prediction = tf.equal(predict, y)   # bool

    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float64))

    3.API不会的时候要学会查文档

    4.jupyter notebook的一些用法:

    https://img.mukewang.com/5d5fa737000143b402980091.jpghttps://img4.mukewang.com/5d5fa73c00014d0402160098.jpg

    0赞 · 0采集
  • 神灯长明兰帕德 2019-03-18
    路路通
    截图
    0赞 · 0采集
  • 凡简 2018-12-05

    章节主要内容

    截图
    0赞 · 0采集
数据加载中...
开始学习 免费