tensorflow2.0三种建模方式
·
1.顺序建模
方式1.
model = tf.keras.Sequential()
model.add(tf.keras.layers.LSTM(100,activation="relu"))
model.add(tf.keras.layers.Dense(2,activation="sigmoid"))
model.compile(optimizer=tf.keras.optimizers.Adam(0.01),loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),metrics=["accuracy"])
input = tf.random.uniform((1000,100,10))
label = tf.random.uniform((1000,2))
model.fit(input,label,epochs=10,batch_size=50)
方式2.
model = tf.keras.Sequential([
tf.keras.layers.LSTM(100,activation="relu",input_shape=(100,10,)),
tf.keras.layers.Dense(10)
])
model.compile(optimizer=tf.keras.optimizers.Adam(0.01),loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),metrics=["accuracy"])
input = tf.random.uniform((1000,100,10),minval=0,maxval=1)
label = tf.random.uniform((1000,10),minval=0,maxval=1)
model.fit(input,label,epochs=10,batch_size=50)
2.函数建模
"""
顺序建模无法实现多输入等操作 如resnet等
这个时候可以用函数式建模方式
"""
import tensorflow as tf
input1 = tf.keras.Input(shape=(100,10))
input2 = tf.keras.Input(shape=(100,10))
x1 = tf.keras.layers.LSTM(100)(input1)
x2 = tf.keras.layers.LSTM(100)(input2)
x = tf.concat([x1,x2],axis=-1)
pre = tf.keras.layers.Dense(10)(x)
# 多输入模型
model = tf.keras.Model(inputs=[input1,input2],outputs=pre)
model.compile(optimizer=tf.keras.optimizers.Adam(0.01),loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),metrics=["accuracy"])
input1 = tf.random.uniform((1000,100,10),minval=0,maxval=1)
input2 = tf.random.uniform((1000,100,10),minval=0,maxval=1)
label = tf.random.uniform((1000,10),minval=0,maxval=1)
model.fit((input1,input2),label,epochs=10,batch_size=50)
3.子类建模
# 通过继承 tf.keras.Model自定义模型
import tensorflow as tf
class Mymodel(tf.keras.Model):
# init 在模型初始化的时候会传递参数 这个参数主要用来配置一些变量
def __init__(self,number_class=10):
super(Mymodel,self).__init__()
self.dense1 = tf.keras.layers.Dense(10)
self.lstm1 = tf.keras.layers.LSTM(100)
self.dense2 = tf.keras.layers.Dense(number_class)
# 这里的call在model.fit时自动传入参数x
def call(self,inputs):
x = self.lstm1(inputs)
x = self.dense1(x)
y = self.dense2(x)
return y
model = Mymodel(number_class=10)
model.compile(optimizer=tf.keras.optimizers.Adam(0.01),loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),metrics=["accuracy"])
x = tf.random.uniform((1000,10,20))
y = tf.random.uniform((1000,10))
model.fit(x,y,epochs=10,batch_size=40)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)