深度学习之非线性问题


title: 深度学习之非线性问题
date: 2019-11-17 10:31:00
tags:

  • python
  • TensorFlow


问题引入

​ 家长们猜测学校的三好学生评选规则,但这次情况不一样了,孩子们的总分不知道,仅知道是否评选上三好学生的结果和孩子的分数

解决思路

​ 先通过随机函数批量生成实验数据,此处模拟的是孩子们的家长向系统投喂数据。然后我们要使用的是 sigmod 函数,这里利用的是 sigmod 在 -5 ~ 5 之间会突变的特性,结果为 0或者1,恰好可以代表是三好学生或者不是三好学生。然后我们还需注意代码中偏移量b 的使用,否则我们的答案只会一直未0或1,达不到突变的效果。

实验代码

import tensorflow as tf
import numpy as np
import random

random.seed()

rowCount = 10000

goodCount = 0

xDataRandom = np.full((rowCount, 3), 0, dtype=np.float32)

yTrainRandom = np.full(rowCount, 0, dtype=np.float32)

for i in range(rowCount):
    for j in range(3):
        if i % 2 == 0:
            xDataRandom[i][j] = np.floor(random.random() * 41 + 60)
        else:
            xDataRandom[i][j] = np.floor(random.random() * 8 + 93)

    if xDataRandom[i][0] * 0.6 + xDataRandom[i][1] * 0.3 + xDataRandom[i][2] * 0.1 >= 95:
        yTrainRandom[i] = 1
        goodCount += 1
    else:
        yTrainRandom[i] = 0
x = tf.placeholder(dtype=tf.float32)

yTrain = tf.placeholder(dtype=tf.float32)

w = tf.Variable(tf.zeros([3]), dtype=tf.float32)

b = tf.Variable(80, dtype=tf.float32)

w1 = tf.nn.softmax(w)

y = w1 * x

yMid = tf.reduce_sum(y) - b

yResult = tf.nn.sigmoid(yMid)

loss = tf.abs(yTrain - yResult)

optimizer = tf.train.RMSPropOptimizer(0.1)

train = optimizer.minimize(loss)

sess = tf.Session()

init = tf.global_variables_initializer()

sess.run(init)

for i in range(10000):
    result = sess.run([train, x, w1, yResult, yMid, b, yTrain, loss], feed_dict={x: xDataRandom[i % rowCount], yTrain: yTrainRandom[i % rowCount]})
    if i % 100 == 0:
        print(result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值