加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线15915421161

SIEMENS江苏省宿迁市 西门子代理商——西门子华东一级总代理

更新时间
2024-11-26 07:00:00
价格
请来电询价
西门子总代理
PLC
西门子一级代
驱动
西门子代理商
伺服电机
联系电话
15903418770
联系手机
15915421161
联系人
张经理
立即询价

详细介绍

平面曲线属于非线性函数,至少需要 3 层的神经网络(输入层,隐藏层x1,输出层)来实现,为达到较好的效果,可尝试更多层,下面的例子使用了2层隐藏层,采用Zui基本的全连接形式,隐藏层的神经元个数没有严格要求,根据实际项目选择,下面例子选用8个。

下面通过代码实现:

  • 引入相关库,定义神经网络层

  • import tensorflow as tf
    import numpy as np
    import matplotlib.pyplot as plt

    # 构造添加一个神经层的函数
    def add_layer(inputs, in_size, out_size, activation_function=None):
    Weights = tf.Variable(tf.random_normal([in_size, out_size])) #权重矩阵[列,行]
    biases = tf.Variable(tf.zeros([1, out_size]) + 0.1) # 偏置向量[列,行]
    = tf.matmul(inputs, Weights) + biases # w*x+b(未激活)
    if activation_function is None: # 线性关系(不使用激活函数)
    outputs =
    else:
    outputs = activation_function()# 非线性激活
    return outputs

  • 生成些输入数据并导入网路

    因为要拟合平面曲线,输入x和输出y均为一维数据

  • # 导入数据,这里的x_data和y_data并不是严格的一元二次函数的关系
    # 因为我们多加了一个noise,这样看起来会更像真实情况
    x_data = np.linspace(-1,1,300, dtype=np.float32)[:, np.newaxis]#300行,1个特性
    noise = np.random.normal(0, 0.05, x_data.shape).astype(np.float32)# 均值,方差,形状
    y_data = np.power(x_data,3)*10 - 8*noise # y = x^2-0.5+noise

    # 利用占位符定义我们所需的神经网络的输入
    # None代表无论输入有多少都可以,因为输入只有一个特征,所以这里是1
    xs = tf.placeholder(tf.float32, [None, 1])
    ys = tf.placeholder(tf.float32, [None, 1])

  • 搭建网络

    输入层:神经元个数1(输出1)

    隐藏层1:神经元个数8(输入1,输出8)

    隐藏层2:神经元个数8(输入8,输出8)

    输出层:神经元个数1(输入8,输出1)

  • # 定义隐藏层【l1】和【l2】,利用之前的add_layer()函数
    l1 = add_layer(xs, 1, 8, activation_function=tf.nn.sigmoid) # 输入层,输入,输出
    l2 = add_layer(l1, 8, 8, activation_function=tf.nn.sigmoid) # 输入层,输入,输出

    # 定义输出层【prediction】。输入就是隐藏层的输出——l1,输入有10层,输出有1层
    prediction = add_layer(l2, 8, 1, activation_function=None)


    相关产品

    联系方式

    • 电  话:15903418770
    • 联系人:张经理
    • 手  机:15915421161
    • 微  信:15915421161