博文配套视频课程:24小时实现从零到AI人工智能
神经网络特点
神经网络就是之前的感知器的叠加,主要用来解决多分类问题。
- 有多少个特征,就会有多少个输入神经元
- 每根连接线都有权重,除了输入神经元,其它每个神经元都有偏置
- 同一层神经元之间没有连接,深度神经网络神由:输入、隐藏、输出层组成
- 简单神经网络由:输入、输出层组成
创建输入与输出神经元
训练的时候不会一次性加载所有图片,因此需要采用占位符,加载图片数量不确定,但是每张图都有784个像素
# 完成图形图像的加载 (分辨率和尺寸相同)
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
# 通过函数下载或者加载本地的图片资源,建议设置one_hot=True
mnist = input_data.read_data_sets("../data/input_data",one_hot=True)
# 训练的时候不会一次性加载55000,因此需要采用占位符
X = tf.placeholder(tf.float32,[None,784])
y_true = tf.placeholder(tf.int32,[None,10])
创建权重与偏置
多少个连接就会有多少个权重weight [None,784] dot [784,10] => [None,10]
weight = tf.Variable(tf.random.normal([784,10]),name="weight")
bias = tf.Variable(tf.random.normal([10]),name="bias")
# matmul类似numpy dot函数
y_predict = tf.matmul(X,weight) + bias # matmul == dot
import numpy as np
X = np.arange(12).reshape(3,4)
w = np.arange(4).reshape(4,1)
print(X)
print(w)
print(X.dot(w))
y_predict = tf.matmul(X,w)
# 通过会话连接graph图
with tf.Session() as sess:
print(sess.run(y_predict)) # dot