美文网首页
Keras多输出模型构建

Keras多输出模型构建

作者: AIPlayer | 来源:发表于2019-07-31 22:23 被阅读0次

1、多输出模型

使用keras函数式API构建网络:

# 输入层
inputs = tf.keras.layers.Input(shape=(64,64,3))

# 卷积层及全连接层等相关层
x = tf.keras.layers.Dense(256, activation=tf.nn.relu)(inputs)

# 多输出,定义两个输出,指定名字标识
fc_a=tf.keras.layers.Dense(name='fc_a',units=CLASS_NUM,activation=tf.nn.softmax)(x)
fc_b=tf.keras.layers.Dense(name='fc_b',units=CLASS_NUM,activation=tf.nn.softmax)(x)
# 单输入多输出
model = tf.keras.Model(inputs=inputs, outputs=[fc_a, fc_b])

# 目标函数定义,需与输出层名字对应
losses = {'fc_a': 'categorical_crossentropy',
          'fc_b': 'categorical_crossentropy'}

model.compile(optimizer=tf.train.AdamOptimizer(),
                loss=losses,
                metrics=['accuracy'])

2、自定义loss函数

def loss_a(y_true, y_pred):
    return tf.keras.losses.categorical_crossentropy(y_true, y_pred)

def loss_b(y_true, y_pred):
    return tf.keras.losses.meas_squared_error(y_true, y_pred)

losses = {'fc_a': loss_a,
          'fc_b': loss_b}

model.compile(optimizer=tf.train.AdamOptimizer(),
                loss=losses,
                metrics=['accuracy'])

3、批量训练

# data_generator返回的标签形式要是与多输出的数量对应的数组
def data_generator(sample_num, batch_size):
    while True:
        max_num = sample_num - (sample_num % batch_size)
        for i in range(0, max_num, batch_size):
            ...
            yield (batch_x, [batch_a, batch_b])

model.fit_generator(generator=data_generator(sample_num, batch_size),
                    steps_per_epoch=sample_num//batch_size,
                    epoches=EPOCHES,
                    verbose=1)

4、调试

在自定义的loss函数中,是以Sequence的方式来输入的,如果想调试查看loss的计算过程中的输出,直接print是无法打印值的,这是因为tensorflow的每次op都要以sess为基础来启动,如果想调试,可以用eager_execution模式:

import tensorflow.contrib.eager as tfe
tfe.enable_eager_execution()
np.set_printoptions(threshold=np.nan) # 输出所有元素

相关文章

  • Keras多输出模型构建

    1、多输出模型 使用keras函数式API构建网络: 2、自定义loss函数 3、批量训练 4、调试 在自定义的l...

  • keras用法一

    keras构建神经网络 第一步选择模型 序贯模型或函数式模型 第二步构建网络层 输入层,隐藏层,输出层包括的函数:...

  • Keras 多输入、多输出、多loss模型构建

    Keras在会为Model的每一个输出构建一个loss,这些loss之间无法交互。同时,Model中每一个outp...

  • Keras 模型构建

    介绍 Keras中构建 模型有两种方式,一种是通过Model类构建,一种是通过Sequential构建。前者类似对...

  • keras

    Keras设计了俩种构建模型的方式函数式模型API和顺序式模型API 顺序式模型API构建模型示例: from k...

  • tensorflow模型建立与训练

    线性分类器Model 数据获取及预处理: tf.keras.datasets 模型的构建: tf.keras.Mo...

  • 如何使用Tensorflow保存或者加载模型(三) -- Ker

    1.背景 Keras是一个非常易于上手,好用的深度学习框架。不仅容易构建模型,而且容易保存模型。目前,Keras已...

  • tf.Keras

    tf.keras 是 TensorFlow 对 Keras API 规范的实现。这是一个用于构建和训练模型的高阶 ...

  • 自动部署深度神经网络模型TensorFlow(Keras)到生产

    目录 Keras简介 Keras模型分类 Keras模型部署准备 默认部署Keras模型 自定义部署Keras模型...

  • BigDL入门 (2)

    模型构建 在BigDL中,模型构建的API共分为两层,即torch风格的低级API和keras风格的高级A...

网友评论

      本文标题:Keras多输出模型构建

      本文链接:https://www.haomeiwen.com/subject/jrwxdctx.html