使用隐藏层解决非线性问题

使用隐藏层解决非线性问题:

                    输入层:    隐藏层:   输出层: 

                           


import tensorflow as tf
import numpy as np

learning_rate = 0.0001
n_input = 2
n_label = 1
n_hidden = 2

x = tf.placeholder(tf.float32, [None, n_input])
y = tf.placeholder(tf.float32, [None, n_label])

weights = {
    'h1': tf.Variable(tf.truncated_normal([ n_input, n_hidden], stddev =0.1)),
    'h2': tf.Variable(tf.truncated_normal([n_hidden, n_label], stddev =0.1))
}
biases = {
    'h1': tf.Variable(tf.zeros([n_hidden])),
    'h2': tf.Variable(tf.zeros([n_label]))
}

layer_1 = tf.nn.relu(tf.add(tf.matmul(x, weights['h1']), biases['h1']))
y_pred = tf.nn.tanh(tf.add(tf.matmul(layer_1,weights['h2']), biases['h2']))

loss = tf.reduce_mean((y_pred - y)**2)
train_step = tf.train.AdamOptimizer(learning_rate).minimize(loss)

X = [[0,0],[0,1],[1,0],[1,1]]
Y = [[0],[1],[1],[0]]
X = np.array(X).astype('float32')
Y = np.array(Y).astype('int16')

# 迭代训练模型
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
for i in range(1000):
    sess.run(train_step, feed_dict = {x:X, y:Y})
    # 计算预测值
    print(sess.run(y_pred, feed_dict={x:X}))
    # 查看隐藏层的输出
    print(sess.run(layer_1, feed_dict = {x:X}))

结果:

[[ 9.9999961e-05]
 [-1.2277756e-03]
 [-1.2540328e-02]
 [-1.3875227e-02]]
[[0.         0.        ]
 [0.01804843 0.        ]
 [0.17182861 0.        ]
 [0.18997703 0.        ]]
[[ 0.0002    ]
 [-0.00111128]
 [-0.01240848]
 [-0.01373422]]

......

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值