44、深度学习-自学之路-自己搭建深度学习框架-6、自动优化,就是把原来的权重更新的部分用面向对象的方式再写一次

import numpy as np

np.random.seed(1)

data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
target = np.array([[0], [1], [0], [1]])

#weights_0_1 = np.random.rand(2, 3)
#weights_1_2 = np.random.rand(3, 1)

weights_0_1 = np.array([[0.1, 0.2, 0.3],
                        [0.2, 0.3, 0.4]])

weights_1_2 = np.array([[0.1], [0.2], [0.3]])

for i in range(10):
    # Predict
    layer_1 = data.dot(weights_0_1)

    layer_2 = layer_1.dot(weights_1_2)

    # Compare
    diff = 2*(layer_2 - target)

    sqdiff = ((layer_2 - target) * (layer_2 - target))

    loss = sqdiff.sum(0)  # mean squared error loss

    # Learn: this is the backpropagation piece
    layer_1_grad = diff.dot(weights_1_2.transpose())
    weight_1_2_update = layer_1.transpose().dot(diff)
    weight_0_1_update = data.transpose().dot(layer_1_grad)

    weights_1_2 -= weight_1_2_update * 0.1
    weights_0_1 -= weight_0_1_update * 0.1
    print(loss[0])

'''
1.0952000000000002
0.6129140655015936
0.32195987524699904
0.2110698255310266
0.15398367910209976
0.11124317838213824
0.07869159455532486
0.054482692309687476
0.036943246165084605
0.02456437411947067
'''

你可能感兴趣的:(深度学习-自学之路,深度学习,人工智能)