关于构造神经网络维度的问题

关于神经网络维度

发现很多时候维度不明确 代码如下

#author MJY

import tensorflow as tf
import numpy as np

def add_layer(inputs, in_size, out_size, activation_function=None):
    Weights=tf.Variable(tf.random_normal([out_size, in_size]))#初始化了一个insize行outsize列的权重矩阵
    biases=tf.Variable(tf.zeros([out_size,1])+0.1)#b不建议以0初始化
    Wx_plus_b = tf.matmul( Weights,inputs) + biases#未激活的值
    if activation_function is None:
        outputs = Wx_plus_b#线性7
    else:
        outputs=activation_function(Wx_plus_b)
    return outputs
#以上添加了一个神经层
#我终于明白了!!!!!!!!
#你这个建立的时候 w b 都是只是相对于一个样本来说的 所以不考虑m
#以下自己建造一个数据集
x_data=np.linspace(-1,1,300)[ np.newaxis,:]#-1到1这个区间 300个单位 并变列向量,即加一个维度 但每次输入好像就输入一个
noise=np.random.normal(0, 0.05, x_data.shape)#均值0 标准差0.05 xdata一样的格式 加噪点以更像真实数据
y_data=np.square(x_data)-0.5+noise
#以下建立神经网络

xs=tf.placeholder(tf.float32,[1,None])#[None,1]即为行不定 列为一 可理解为列向量
ys=tf.placeholder(tf.float32,[1,None])
l1=add_layer(xs, 1, 10, activation_function=tf.nn.relu)#输入层
prediction=add_layer(l1, 10, 1, activation_function=None)#输出层

loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[0]))#reduce_sum 求和命令 reduce_mean求平均值  reduction_indices命令看csdn收藏夹

train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)#0.1为学习率 一般小于一
#minimize(loss)为每次需要降低loss

init=tf.global_variables_initializer()
sess=tf.Session()
sess.run(init)

for i in range(1000):#学习一千次
    sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
    if i%50==0:
        print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))

值得注意的是 看过吴恩达教程的都知道当训练样本为m个的时候要把n1 ,biases都根据m向量化,但是这里要注意,当构建神经网络单层解释的时候默认只有一个样本的输入,当构建完毕之后,引入x_data之后才将其看作向量化后的结果

也就是说 这里最重要的一点是上面的这一句

biases=tf.Variable(tf.zeros([out_size,**1**])+0.1)
这个1,一定要注意!!!而不是300!!!

  1. 0 ↩︎

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值