精华内容
下载资源
问答
  • matlab开发-多输入多输出多系统的模型预测控制。采用二次规划方法模拟多输入多输出系统的模型预测控制
  • 一个具有两个输入和两个输出模型: 我们试图预测 Twitter 上的一条新闻标题有多少转发和点赞数。模型的主要输入将是新闻标题本身,即一系列词语,但是为了增添趣味,我们的模型还添加了其他的辅助输入来接收额外的...

    一个具有两个输入和两个输出的模型:

    我们试图预测 Twitter 上的一条新闻标题有多少转发和点赞数。模型的主要输入将是新闻标题本身,即一系列词语,但是为了增添趣味,我们的模型还添加了其他的辅助输入来接收额外的数据,例如新闻标题的发布的时间等。 该模型也将通过两个损失函数进行监督学习。较早地在模型中使用主损失函数,是深度学习模型的一个良好正则方法。
    模型结构如下图所示:
    在这里插入图片描述
    主要输入接收新闻标题本身,即一个整数序列(每个整数编码一个词)。 这些整数在 1 到 10,000 之间(10,000 个词的词汇表),且序列长度为 100 个词。

    from keras.layers import Input, Embedding, LSTM, Dense
    from keras.models import Model
    
    # 标题输入:接收一个含有 100 个整数的序列,每个整数在 1 到 10000 之间。
    # 注意我们可以通过传递一个 "name" 参数来命名任何层。
    main_input = Input(shape=(100,), dtype='int32', name='main_input')
    
    # Embedding 层将输入序列编码为一个稠密向量的序列,
    # 每个向量维度为 512。
    x = Embedding(output_dim=512, input_dim=10000, input_length=100)(main_input)
    
    # LSTM 层把向量序列转换成单个向量,
    # 它包含整个序列的上下文信息
    lstm_out = LSTM(32)(x)
    

    在这里,我们插入辅助损失,使得即使在模型主损失很高的情况下,LSTM 层和 Embedding 层都能被平稳地训练。

    auxiliary_output = Dense(1, activation='sigmoid', name='aux_output')(lstm_out)
    

    此时,我们将辅助输入数据与 LSTM 层的输出连接起来,输入到模型中:

    auxiliary_input = Input(shape=(5,), name='aux_input')
    x = keras.layers.concatenate([lstm_out, auxiliary_input])
    
    # 堆叠多个全连接网络层
    x = Dense(64, activation='relu')(x)
    x = Dense(64, activation='relu')(x)
    x = Dense(64, activation='relu')(x)
    
    # 最后添加主要的逻辑回归层
    main_output = Dense(1, activation='sigmoid', name='main_output')(x)
    

    然后定义一个具有两个输入和两个输出的模型:

    model = Model(inputs=[main_input, auxiliary_input], outputs=[main_output, auxiliary_output])
    

    现在编译模型,并给辅助损失分配一个 0.2 的权重。如果要为不同的输出指定不同的 loss_weights 或 loss,可以使用列表或字典。 在这里,我们给 loss 参数传递单个损失函数,这个损失将用于所有的输出。

    model.compile(optimizer='rmsprop', loss='binary_crossentropy',
                  loss_weights=[1., 0.2])
    

    我们可以通过传递输入数组和目标数组的列表来训练模型:

    model.fit([headline_data, additional_data], [labels, labels],
              epochs=50, batch_size=32)
    

    由于输入和输出均被命名了(在定义时传递了一个 name 参数),我们也可以通过以下方式编译模型:

    model.compile(optimizer='rmsprop',
                  loss={'main_output': 'binary_crossentropy', 'aux_output': 'binary_crossentropy'},
                  loss_weights={'main_output': 1., 'aux_output': 0.2})
    
    # 然后使用以下方式训练:
    model.fit({'main_input': headline_data, 'aux_input': additional_data},
              {'main_output': labels, 'aux_output': labels},
              epochs=50, batch_size=32)
    

    多输入单输出模型(共享网络层)

    来考虑推特推文数据集。我们想要建立一个模型来分辨两条推文是否来自同一个人(例如,通过推文的相似性来对用户进行比较)。

    实现这个目标的一种方法是建立一个模型,将两条推文编码成两个向量,连接向量,然后添加逻辑回归层;这将输出两条推文来自同一作者的概率。模型将接收一对对正负表示的推特数据。

    由于这个问题是对称的,编码第一条推文的机制应该被完全重用来编码第二条推文(权重及其他全部)。这里我们使用一个共享的 LSTM 层来编码推文。

    让我们使用函数式 API 来构建它。首先我们将一条推特转换为一个尺寸为 (280, 256) 的矩阵,即每条推特 280 字符,每个字符为 256 维的 one-hot 编码向量 (取 256 个常用字符)。

    import keras
    from keras.layers import Input, LSTM, Dense
    from keras.models import Model
    
    tweet_a = Input(shape=(280, 256))
    tweet_b = Input(shape=(280, 256))
    

    要在不同的输入上共享同一个层,只需实例化该层一次,然后根据需要传入你想要的输入即可:

    # 这一层可以输入一个矩阵,并返回一个 64 维的向量
    shared_lstm = LSTM(64)
    
    # 当我们重用相同的图层实例多次,图层的权重也会被重用 (它其实就是同一层)
    encoded_a = shared_lstm(tweet_a)
    encoded_b = shared_lstm(tweet_b)
    
    # 然后再连接两个向量:
    merged_vector = keras.layers.concatenate([encoded_a, encoded_b], axis=-1)
    
    # 再在上面添加一个逻辑回归层
    predictions = Dense(1, activation='sigmoid')(merged_vector)
    
    # 定义一个连接推特输入和预测的可训练的模型
    model = Model(inputs=[tweet_a, tweet_b], outputs=predictions)
    
    model.compile(optimizer='rmsprop',
                  loss='binary_crossentropy',
                  metrics=['accuracy'])
    model.fit([data_a, data_b], labels, epochs=10)
    

    层「节点」的概念

    每当你在某个输入上调用一个层时,都将创建一个新的张量(层的输出),并且为该层添加一个「节点」,将输入张量连接到输出张量。当多次调用同一个图层时,该图层将拥有多个节点索引 (0, 1, 2…)。

    在之前版本的 Keras 中,可以通过 layer.get_output() 来获得层实例的输出张量,或者通过 layer.output_shape 来获取其输出形状。现在你依然可以这么做(除了 get_output() 已经被 output 属性替代)。但是如果一个层与多个输入连接呢?

    只要一个层仅仅连接到一个输入,就不会有困惑,.output 会返回层的唯一输出:

    a = Input(shape=(280, 256))
    
    lstm = LSTM(32)
    encoded_a = lstm(a)
    
    assert lstm.output == encoded_a
    

    但是如果该层有多个输入,那就会出现问题:

    a = Input(shape=(280, 256))
    b = Input(shape=(280, 256))
    
    lstm = LSTM(32)
    encoded_a = lstm(a)
    encoded_b = lstm(b)
    
    lstm.output
    
    >> AttributeError: Layer lstm_1 has multiple inbound nodes,
    hence the notion of "layer output" is ill-defined.
    Use `get_output_at(node_index)` instead.
    

    好吧,通过下面的方法可以解决:

    assert lstm.get_output_at(0) == encoded_a
    assert lstm.get_output_at(1) == encoded_b
    

    input_shape 和 output_shape 这两个属性也是如此:只要该层只有一个节点,或者只要所有节点具有相同的输入/输出尺寸,那么「层输出/输入尺寸」的概念就被很好地定义,并且将由 layer.output_shape / layer.input_shape 返回。但是比如说,如果将一个 Conv2D 层先应用于尺寸为 (32,32,3) 的输入,再应用于尺寸为 (64, 64, 3) 的输入,那么这个层就会有多个输入/输出尺寸,你将不得不通过指定它们所属节点的索引来获取它们:

    a = Input(shape=(32, 32, 3))
    b = Input(shape=(64, 64, 3))
    
    conv = Conv2D(16, (3, 3), padding='same')
    conved_a = conv(a)
    
    # 到目前为止只有一个输入,以下可行:
    assert conv.input_shape == (None, 32, 32, 3)
    
    conved_b = conv(b)
    # 现在 `.input_shape` 属性不可行,但是这样可以:
    assert conv.get_input_shape_at(0) == (None, 32, 32, 3)
    assert conv.get_input_shape_at(1) == (None, 64, 64, 3)
    
    展开全文
  • Keras多输入多输出模型的解读 来考虑下面的模型。我们试图预测 Twitter 上的一条新闻标题有多少转发和点赞数。 模型的主要输入(main_input)将是新闻标题本身,即一系列词语,但是为了增添输入元素的多样性,我们的...

    Keras多输入多输出模型的解读

    来考虑下面的模型。我们试图预测 Twitter 上的一条新闻标题有多少转发和点赞数。
    模型的主要输入(main_input)将是新闻标题本身,即一系列词语,但是为了增添输入元素的多样性,我们的模型还添加了其他的辅助输入(aux_input)来接收额外的数据,例如新闻标题的发布的时间等。 该模型将通过两个损失函数进行监督学习。较早地在模型中使用主损失函数,是深度学习模型的一个良好正则方法。
    在这里插入图片描述

    其中,aux_output(Dense)层通过辅助损失调整网络参数,这一结构被应用于Inception系列中(Inception系列整体架构是单输入多输出),能够作为网络正则化的惩罚项存在,也能起到防止梯度消失的作用。main_output(Dense)层作为最后输出层。

    源码实现:见链接: Keras中文文档.

    Inception 模型

    Inception详细描述见论文:https://arxiv.org/abs/1512.03385

    from keras.layers import Conv2D, MaxPooling2D, Input
    input_img = Input(shape=(256, 256, 3))
    
    tower_1 = Conv2D(64, (1, 1), padding='same', activation='relu')(input_img)
    tower_1 = Conv2D(64, (3, 3), padding='same', activation='relu')(tower_1)
    tower_2 = Conv2D(64, (1, 1), padding='same', activation='relu')(input_img)
    tower_2 = Conv2D(64, (5, 5), padding='same', activation='relu')(tower_2)
    tower_3 = MaxPooling2D((3, 3), strides=(1, 1), padding='same')(input_img)
    tower_3 = Conv2D(64, (1, 1), padding='same', activation='relu')(tower_3)
    
    # 也可以看成是多输入的连接
    output = keras.layers.concatenate([tower_1, tower_2, tower_3], axis=1)
    

    卷积层上的残差连接

    resnet论文详见:https://arxiv.org/abs/1512.03385

    from keras.layers import Conv2D, Input
    
    # 输入张量为 3 通道 256x256 图像
    x = Input(shape=(256, 256, 3))
    # 3 输出通道(与输入通道相同)的 3x3 卷积核
    y = Conv2D(3, (3, 3), padding='same')(x)
    
    # 返回 x + y   这一层的输入相当于input和卷积层
    z = keras.layers.add([x, y])
    
    展开全文
  • MATLAB实现LSTM多步预测多输入多输出 时间序列 | 数据预测 | MATLAB】LSTM多步预测 | Elman多步预测 | RNN多步预测 | 机器学习模型 回归预测 | 数据预测 | MATLAB】LSTM多入多出回归预测 | BP多入多出回归预测 | ...
    展开全文
  • keras搬砖系列-keras多输入多输出模型

    千次阅读 2018-03-06 17:54:46
    keras搬砖系列-keras多输入多输出模型使用函数式模型的一个典型的场景就是搭建多输入,多输出模型。考虑这样一个模型,希望预测一条新闻会被转发和点赞多少次。模型的主要输入是新闻的本身,也就是一个词语的序列,...

    keras搬砖系列-keras多输入多输出模型

    使用函数式模型的一个典型的场景就是搭建多输入,多输出模型。

    考虑这样一个模型,希望预测一条新闻会被转发和点赞多少次。模型的主要输入是新闻的本身,也就是一个词语的序列,但是我们可能还需要额外的输入,新闻发布的日期等,所以这个模型的损失函数将会由两个部分组成,辅助的损失函数基于新闻本身做出的预测的情况,主损失函数评估基于新闻和额外信息的预测情况,即使来自主损失函数的梯度弥散,来自辅助损失函数的信息也能够训练。

    inception module为例:


    from keras.layers import Conv2D,MaxPooling2D,Input
    input_img = Input(shape=(256,256,3))
    tower_1 = Conv2D(64,(1,1),padding='same',activation='relu')(input_img)
    tower_1 = Conv2D(64,(1,1),padding='same',activation='relu')(input_img)
    
    tower_2 = Conv2D(64,(1,1),padding='same',activation='relu')(input_img)
    tower_2 = Conv2D(64,(5,5),padding='same',activation='relu')(tower_2)
    
    tower_3 = MaxPooling2D((3,3),strides=(1,1),padding='same')(input_img)
    tower_3 = Conv2D(64,(1,1),padding='same',activation='relu')(tower_3)
    
    output = keras.layers.concatenate([tower_1,tower_2,tower_3],axis=1)


    展开全文
  • 针对该问题,提出一种基于多输入多输出H W模型的电极系统建模方法,该模型的结构与实际电极系统结构一致,有利于模型预测精度的提高,另外在多输入多输出的静态非线性块不可逆的条件下,提出可分非线性最小二乘算法...
  • 拿到这个问题,我的思路有两个,一个是利用神经网络算法,毕竟其自身的构造特点就是多输入多输出;另一个是对每一个输出变量构造回归模型,有几个输出就有几个回归模型,当然最好都用同一种算法。在自己思考过后,在...
  • 多输入多输出模型:使用函数式模型的一个典型场景是搭建多输入多输出模型。 考虑这样一个模型。我们希望预测Twitter上一条新闻会被转发和点赞多少次。模型的主要输入是新闻本身,也就是一个词语的序列。但...
  • deep理论及前期博客2、多输入3、多输出 1、wide&deep理论及前期博客 wide&deep模型:https://blog.csdn.net/caoyuan666/article/details/105869670 函数API实现wide&deep模型 子类API实现wide&deep...
  • 本文件为深度学习多输出数据集,简单易懂,非常难得可贵,下载后可以直接输入神经网络进行预测使用,适用于深度学习的预测和分类。
  • 多输入多输出模型:使用函数式模型的一个典型场景是搭建多输入多输出模型。 考虑这样一个模型。我们希望预测Twitter上一条新闻会被转发和点赞多少次。模型的主要输入是新闻本身,也就是一个词语的序列。但...
  • 1、 基本模型结构,预测一个序列,输入个时间步,输出:单个时间步 输入1,2,3 标签4 输入2,3,4 标签5 输入3,4,5 预测标签6 以此类推,时间窗口为3,通常输入形式:(窗口大小3,每个窗口序列个数,此处为1) 2、...
  • 本文提出了一种用于主题描述和边界噪声的系统的输出反馈鲁棒模型预测控制(RMPC)的综合方法。与以前的作品不同,我们没有利用状态空间模型。因此,不需要估计真实状态的边界。我们直接利用投入产出模型。反馈控制...
  • 最近,看到股票持续走低为我增强了信心,发现为行为...算法模型基于动态隐层LSTM RNN搭建,损失函数使用cross_entropy损失最大值,输入M维度、输出N维度,并预测长时间。代码基于Python3.6.X和Tensorflow1.13.X实现。
  • 这几年,深度学习推动了人工智能领域快速的向前发展,神经网络架构也是演变的越来越复杂,经常会有多输入多输出的情况,然而,我们在使用训练后的模型进行预测的时候,有时并不需要进行和训练时一样的输入和输出,...
  • 首先,通过考虑输入,输出间的耦合,建立基于并行支持向量机的多步预测模型;然后,将该模型用于非线性预测控制,提出新的适用于并行预测模型的反馈校正策略,得到最优控制律.连续搅拌槽式反应器(CSTR)的控制仿真结果表明,...
  • 多输出回归是指在给出输入示例的情况下涉及预测两个或多个数值的回归问题。一个示例可能是在给定输入的情况下预测坐标,例如预测x和y值。另一个示例是多步时间序列预测,其中涉及预测给定变量的多个未来时间序列。...
  • 多输出回归是指在给出输入示例的情况下涉及预测两个或多个数值的回归问题。一个示例可能是在给定输入的情况下预测坐标,例如预测x和y值。另一个示例是多步时间序列预测,其中涉及预测给定变量的多个未来时间序列。...
  • 多输出回归是指在给出输入示例的情况下涉及预测两个或多个数值的回归问题。一个示例可能是在给定输入的情况下预测坐标,例如预测x和y值。另一个示例是多步时间序列预测,其中涉及预测给定变量的多个未来时间序列。...
  • 在本节中,我们将更新上一节中开发的编码器-解码器LSTM,使用8个...使用多元输入有助于解决这样的问题,即输出序列是来自个不同特征的先前时间步长的某个函数,而不只是(或包括)预测的特征。目前还不清楚在电力...
  • 之前 @GUESS 已经对单输入单输出的动态矩阵控制做了介绍,这里就不多赘述,主要讲解多输入多输出动态矩阵控制的算法及其代码实现。一、多输入多输出动态矩阵控制(MIMO-DMC)对于MIMO-DMC而言,其控制原理与单输入单...
  • 多输出回归是指在给出输入示例的情况下涉及预测两个或多个数值的回归问题。一个示例可能是在给定输入的情况下预测坐标,例如预测x和y值。另一个示例是多步时间序列预测,其中涉及预测给定变量的多个未来时间序列。...
  • MPC模型预测控制程序

    2014-06-11 16:22:09
    模型预测控制,无约束,matlab程序,多变量多输入多输出
  • 2、将神经网络预测值(倒数)作为fitness应该怎么写完整算法,怎么用GA算法对8个输入条件和预测输出值进行编码和解码? ps:本人不是计算机专业所有模型算法都是自己折腾,建模都是在MATLAB做的 这个方法已被用于...
  • 针对实际系统中采集的数据流的不确定性,给...再利用输入输出数据间的相关性,基于GPR建立预测模型,比较实时观察的输出数据流与预测模型输出数据流,最终从输入输出两种不同通道实现数据流的异常检测与修正。
  • 利用Tensorflow训练好的模型,图片进行预测和识别,并输出相应的标签和预测概率。如果想要张图片,可以进行批次加载和预测,这里仅用单张图片进行演示。模型文件:预测图片:这里直接贴代码,都有注释,应该很好...
  • RNN 不同于传统神经网络的感知机的最大特征就是跟时间挂上钩,即包含了一 个循环的网络,就是下一时间的结果不仅受下一时间的输入的影响,也受上一 时间输出的影响,进一步地说就是信息具有持久的影响力。...
  • 针对MIMO非线性系统的模型预测控制(MPC),建立了一种新型的带有外部输入的反向传播自回归(BP-ARX)组合模型,可以得到输入输出之间的稳态关系。 BP神经网络代表稳态关系,ARX模型代表非线性系统输入输出之间...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 818
精华内容 327
关键字:

多输入多输出预测模型