深度学习:输入和输出不同情况模型分享

单输入--单输出

input = tf.keras.Input(shape = (256,256,3))
c1 = tf.keras.layers.Conv2D(16,3,activation = 'relu')(input)
c1 = tf.keras.layers.MaxPool2D(3,2)(c1)
c1 = tf.keras.layers.Flatten()(c1)
output = tf.keras.layers.Dense(10,activation = 'softmax')(c1)
model = tf.keras.Model(inputs = input,outputs = output)
tf.keras.utils.plot_model(model,show_shapes=True)

深度学习:输入和输出不同情况模型分享_第1张图片

单输入--多输出

方法1:

input = tf.keras.Input(shape = (256,256,3))
c1 = tf.keras.layers.Conv2D(16,3,activation = 'relu')(input)
c1 = tf.keras.layers.MaxPool2D(3,2)(c1)
c1 = tf.keras.layers.Flatten()(c1)
output1 = tf.keras.layers.Dense(10,activation = 'softmax')(c1)
output2 = tf.keras.layers.Dense(5,activation = 'softmax')(c1)
output3 = tf.keras.layers.Dense(1)(c1)
model = tf.keras.Model(inputs = input,outputs = [output1,output2,output3])
tf.keras.utils.plot_model(model,show_shapes=True)

深度学习:输入和输出不同情况模型分享_第2张图片

方法二:(列表推导式)(前提是输出的标签个数一样)

input = tf.keras.Input(shape = (256,256,3))
c1 = tf.keras.layers.Conv2D(16,3,activation = 'relu')(input)
c1 = tf.keras.layers.MaxPool2D(3,2)(c1)
c1 = tf.keras.layers.Flatten()(c1)
output = [tf.keras.layers.Dense(5,activation= 'softmax')(c1) for i in range(3)]
model = tf.keras.Model(inputs = input,outputs = output)
tf.keras.utils.plot_model(model,show_shapes=True)

深度学习:输入和输出不同情况模型分享_第3张图片

方法三:(例子:验证码识别)

# 每张验证码由5个字符构成,可以是数字或小写字母(36个标签种类)
input = tf.keras.Input(shape = (50,200,3))
c1 = tf.keras.layers.Conv2D(16,3,activation = 'relu')(input)
c1 = tf.keras.layers.MaxPool2D(3,2)(c1)
c1 = tf.keras.layers.Flatten()(c1)
c1 = tf.keras.layers.Dense(36*5)(c1)   # 得到的是160个指标
c1 = tf.keras.layers.Reshape([5,36])(c1)   
output = tf.keras.layers.Softmax()(c1)        # 通过reshape得到每个字符的36中概率
model = tf.keras.Model(inputs = input,outputs = output)
tf.keras.utils.plot_model(model,show_shapes=True)

深度学习:输入和输出不同情况模型分享_第4张图片

 再过程中进行其他运算(合并等操作

input = tf.keras.Input(shape = (256,256,3))
c1 = tf.keras.layers.Conv2D(16,3,activation = 'relu',padding = 'same')(input)
c1 = tf.keras.layers.MaxPool2D(3,2)(c1)
c2 = tf.keras.layers.Conv2D(32,3,activation = 'relu',padding = 'same')(c1)
print('c1:',c1.shape)
print('c2:',c2.shape)
c3 = tf.keras.layers.concatenate([c1,c2])    # 相同维度时才可以进行add操作,
                                             # concatenate主要用才增加图片的层数(维度也要一样)
print('c3:',c3.shape)
c1 = tf.keras.layers.Flatten()(c3)
output1 = tf.keras.layers.Dense(10,activation = 'softmax')(c1)
output2 = tf.keras.layers.Dense(5,activation = 'softmax')(c1)
output3 = tf.keras.layers.Dense(1)(c1)
model = tf.keras.Model(inputs = input,outputs = [output1,output2,output3])
tf.keras.utils.plot_model(model,show_shapes=True)

深度学习:输入和输出不同情况模型分享_第5张图片

 多输入的和多输出的类似

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