• TensorFlow


    TensorFlow 是一种流行的机器学习开源库,由 Google 开发并在 2015 年公开发布。它的设计灵感来自于神经网络和深度学习的研究,因此主要用于构建机器学习模型和进行大规模数据处理。

    TensorFlow 的基本概念包括:

    1. 张量 (Tensor):TensorFlow 的核心数据结构,它是一个多维数组,可以是标量 (0-D)、向量 (1-D)、矩阵 (2-D) 或更高维的数组。

    2. 计算图 (Computation Graph):它是一系列节点 (Node) 和边 (Edge) 的有向图,表示计算过程。每个节点代表一个操作 (Operation),边表示张量在操作之间的传递。

    3. 会话 (Session):它是建立和执行计算图的环境,可以使用 CPU 或 GPU 进行计算。

    4. 变量 (Variable):它是在计算图中保持状态的节点,可以在训练模型时不断更新。

    TensorFlow 的使用场景包括:

    1. 图像识别和分类:TensorFlow 可以用于构建卷积神经网络 (CNN) 模型,以实现图像识别和分类的任务。

    2. 自然语言处理:TensorFlow 可以用于构建循环神经网络 (RNN) 模型,以实现机器翻译、情感分析和语音识别等自然语言处理任务。

    3. 推荐系统:TensorFlow 可以用于构建深度学习模型,以实现个性化推荐和广告推荐等任务。

    4. 数据分析和可视化:TensorFlow 可以用于数据分析和可视化,例如数据聚类、数据降维和数据可视化等任务。

    例:用python的Tensorflow来写一个脉冲神经网络,权重矩阵使用忆阻器模型,神经元采用LIF模型,图片边缘特征提取的脉冲神经网络,输出原始图片与边缘特征图,输入的图片为MHW.jpg

    首先需要安装tensorflow和opencv-python库。本例中使用tensorflow 2.x版本和opencv-python 4.x版本。

    !pip install tensorflow
    !pip install opencv-python
    
    • 1
    • 2

    接着,我们从文件中读入图片并进行预处理,包括图像大小调整、像素值范围调整和格式转换。

    import cv2
    import numpy as np
    
    # 读取图像,调整大小和像素值范围
    img = cv2.imread('MHW.jpg')
    img = cv2.resize(img, (128, 128))
    img = np.array(img, dtype=np.float32) / 255.0
    # 转换为灰度图
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 转换为TensorFlow要求的格式
    img_gray = np.expand_dims(img_gray, axis=-1)
    img_input = np.expand_dims(img_gray, axis=0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    接下来,我们定义忆阻器模型类和LIF模型类,用于构建脉冲神经网络。

    class Memristor:
        def __init__(self, shape):
            self.weights = tf.Variable(tf.initializers.glorot_uniform()(shape), dtype=tf.float32)
            self.conductance = tf.Variable(tf.initializers.glorot_uniform()(shape), dtype=tf.float32)
            self.resistance = tf.Variable(tf.initializers.glorot_uniform()(shape), dtype=tf.float32)
            self.memristance = self.conductance * self.resistance
            self.q = tf.Variable(tf.zeros(shape), dtype=tf.float32)
    
        def __call__(self, input, tau_m, dt):
            v = input
            q = self.q
            weights = self.weights
            memristance = self.memristance
    
            dv = -v / tau_m + tf.tensordot(weights, q, [[3], [2]]) / memristance
            dq = -q / tau_m + v
    
            v = v + dv * dt
            q = q + dq * dt
    
            self.q.assign(q)
    
            return v
    
    
    class LIF:
        def __init__(self, shape, tau_ref, tau_m):
            self.weights = tf.Variable(tf.initializers.glorot_uniform()(shape), dtype=tf.float32)
            self.bias = tf.Variable(tf.initializers.glorot_uniform()(shape[-1:]), dtype=tf.float32)
            self.memristor = Memristor(shape)
            self.voltage = tf.Variable(tf.zeros(shape[:-1] + (shape[-1] + 1,)), dtype=tf.float32)
            self.refractory = tf.Variable(tf.zeros(shape[:-1] + (1,)), dtype=tf.float32)
            self.tau_ref = tau_ref
            self.tau_m = tau_m
    
        def __call__(self, input, dt):
            weights = self.weights
            memristor = self.memristor
            bias = self
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
  • 相关阅读:
    UE5笔记【五】操作细节——光源、光线参数配置、光照图修复
    前端黑魔法 —— 隐藏网络请求的调用栈
    2021-04-27 51单片机接通电源0~2秒内LED点阵显示状态为全亮...
    Pycharm 对容器中的 Python 程序断点远程调试
    NC129 阶乘末尾0的数量
    分销系统助力全行业新业态商业发展,分销系统案例分享
    java计算机毕业设计开放式教学评价管理系统源码+mysql数据库+系统+lw文档+部署
    第四章——DQL查询数据(最重点)
    【Matlab】曲线拟合
    【附源码】计算机毕业设计JAVA家庭理财管理系统
  • 原文地址:https://blog.csdn.net/xin980724/article/details/132813302