python神经网络学习小结2

初始神经网络

张量运算

numpy速度快原因 numpy有些内置的优化函数 当发这些优化函数进行运算时 运算会交给基础线性代数程序集(BLAS)blas是低层次 高效率的操作程序 通常用c或fortran实现

广播

tensorflow简介

tf基于py开发,主要由google开发

keras简介

线性分类器

import numpy as np
from matplotlib import pyplot
import tensorflow as tf

sample_num = 1000
ne_samples = np.random.multivariate_normal(mean=[0, 3], cov=[[1, .5], [.5, 1]], size=sample_num)
po_samples = np.random.multivariate_normal(mean=[3, 0], cov=[[1, .5], [.5, 1]], size=sample_num)

inputs = np.vstack((ne_samples, po_samples)).astype(np.float32)
targets = np.vstack((np.zeros((sample_num, 1), dtype='float32'), np.ones((sample_num, 1), dtype='float32')))

pyplot.scatter(inputs[:, 0], inputs[:, 1], c=targets[:, 0])
# pyplot.show()

input_dim = 2
output_dim = 1

w = tf.Variable(initial_value=tf.random.uniform(shape=(input_dim, output_dim)))
b = tf.Variable(initial_value=tf.zeros(shape=(output_dim, )))


def model(x):
    return tf.matmul(x, w) + b


def square_loss(outputs, predictions):
    sample_loss = tf.square(outputs - predictions)
    return tf.reduce_mean(sample_loss)


learning_rate = .1


def train(x, outputs):
    with tf.GradientTape() as tape:
        predictions = model(x)
        loss = square_loss(outputs, predictions)
        grad_loss_w, grad_loss_b = tape.gradient(loss, [w, b])
        w.assign_sub(grad_loss_w * learning_rate)
        b.assign_sub(grad_loss_b * learning_rate)
    return loss


for epoch in range(20):
    loss = train(inputs, targets)
    print(f'loss at step {epoch}: {loss:.4f}')


x = np.linspace(-1, 4, 100)
y = - (w[0] / w[1] * x) + (0.5 - b) / w[1]
pyplot.plot(x, y, '-r')
predictions = model(inputs)
pyplot.scatter(inputs[:, 0], inputs[:, 1], c=predictions[:, 0] > 0.5)
pyplot.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值