神经网络:【学习笔记】01

1 基本概念

  • 统计学方法,利用已知数据,得出模型,利用模型预测结果。
  • 三要素:数据,算法,算力
  • 输入 -> 权值 -> 运算 -> 输出
  • 联系数据预测和离散数据的分类

2 tensor张量:多维数组(列表)

维数名字例子
00标量
11向量【】
22矩阵【【】,【】】

3 session会话:执行计算图中的结点运算

import tensorflow as tf
x = tf.constant([[1.0, 2.0]])
w = tf.constant([[3.0], [4.0]])

y = tf.matmul(x, w)
print(y)

with tf.Session() as sess:
    print(sess.run(y))

4 参数:变量权重

w = tf.Variable(tf.random_normal([2,3], stddev=2, mean=0, seed=1))
  • [2,3]:产生一个2*3的矩阵
  • stddev:标准差
  • mean:均值
  • seed:随机种子

【注意】:tf.random_normal()函数可以被tf.truncated_normal()函数和tf.random_uniform()替换

5 实现过程

  • 准备数据集,提取特征
  • 搭建nn结构,从输入到输出(先搭建计算图)
  • 大量特征数据集喂给nn,迭代优化nn参数
  • 使用训练好的模型预测和分类

6 代码模板

# coding:utf-8

import tensorflow as tf
import numpy as np
BATCH_SIZE = 8
seed = 23455

rng = np.random.RandomState(seed)

X = rng.rand(32,2)
Y = [[int(x0 + x1 < 1)] for (x0, x1) in X]
print('X:\n', X)
print('Y:\n', Y)


x = tf.placeholder(tf.float32, shape=(None, 2))
y_ = tf.placeholder(tf.float32, shape=(None, 1))

w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))

a = tf.matmul(x, w1)
y = tf.matmul(a, w2)

loss = tf.reduce_mean(tf.square(y - y_))
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss)
# train_step = tf.train.MomentumOptimizer(0.001, 0.9).minimize(loss)
# train_step = tf.train.AdamOptimizer(0.001).minimize(loss)

with tf.Session() as sess:
    init_op = tf.global_variables_initializer()
    sess.run(init_op)

    print('w1:\n', sess.run(w1))
    print('\n')
    print('w2:\n', sess.run(w2))
    print('\n')

    STEPS = 3000
    for i in range(STEPS):
        start = (i * BATCH_SIZE) % 32
        end = start + BATCH_SIZE
        sess.run(train_step, feed_dict={x: X[start:end], y_: Y[start:end]})
        if i % 1000 == 0:
            total_loss = sess.run(loss, feed_dict={x: X, y_: Y})
            print('After %d training step(s), loss on all data is %g' % (i, total_loss))

    print('\n')
    print('w1:\n', sess.run(w1))
    print('\n')
    print('w2:\n', sess.run(w2))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值