Tf.keras.layers.Add和Tf.keras.layers.add

tf.keras.layers.Add(
**kwargs
)
接受同一类型的tensor作为输入,并返回同样类型的tensor。

一般示例

input_shape = (2, 3, 4)
x1 = tf.random.normal(input_shape)
x2 = tf.random.normal(input_shape)
y = tf.keras.layers.Add()([x1, x2])
print(y.shape)

(2,3,4)
如下图所示,Add进行两个tensor对应位置相加操作。

模型示例

input1 = tf.keras.layers.Input(shape=(16,))
x1 = tf.keras.layers.Dense(8, activation=’relu’)(input1)
input2 = tf.keras.layers.Input(shape=(32,))
x2 = tf.keras.layers.Dense(8, activation=’relu’)(input2)
# equivalent to added = tf.keras.layers.add([x1, x2])
added = tf.keras.layers.Add()([x1, x2])
out = tf.keras.layers.Dense(4)(added)
model = tf.keras.models.Model(inputs=[input1, input2], outputs=out)

tf.keras.Sequential As Model

model = tf.keras.Sequential()

创建序列模型
例如:
#第一层要接收一个input_shape参数
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8, input_shape=(16,)))
model.add(tf.keras.layers.Dense(4))
下面和上边功能类似:
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8, input_dim=16))
以及下边:
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8, batch_input_shape=(None, 16)))
如果没有input_shape,model.weight将不能被建立
在真实构建模型时,需要加上build(batch_input_shape)
# When using the delayed-build pattern (no input shape specified), you can
# choose to manually build your model by calling
# build(batch_input_shape):
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8))
model.add(tf.keras.layers.Dense(4))
model.build((None, 16))
len(model.weights)

model.add(**layer)

model.add(tf.keras.layers.Dense(8))
model.add(tf.keras.layers.Dropout(0.5))
等等,参考tf.keras.layers

model.compile()

compile(
optimizer=’rmsprop’, loss=None, metrics=None, loss_weights=None,
sample_weight_mode=None, weighted_metrics=None, **kwargs
)

tf.keras.optimizers

Adadelta

tf.keras.optimizers.Adadelta(
learning_rate=0.001, rho=0.95, epsilon=1e-07, name=’Adadelta’, **kwargs
)

Adagrad

tf.keras.optimizers.Adagrad(
learning_rate=0.001, initial_accumulator_value=0.1, epsilon=1e-07,
name=’Adagrad’, **kwargs
)

Adam

tf.keras.optimizers.Adam(
learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, amsgrad=False,
name=’Adam’, **kwargs
)

RMSprop

tf.keras.optimizers.RMSprop(
learning_rate=0.001, rho=0.9, momentum=0.0, epsilon=1e-07, centered=False,
name=’RMSprop’, **kwargs
)

SGD


fit

fit(
x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None,
validation_split=0.0, validation_data=None, shuffle=True, class_weight=None,
sample_weight=None, initial_epoch=0, steps_per_epoch=None,
validation_steps=None, validation_batch_size=None, validation_freq=1,
max_queue_size=10, workers=1, use_multiprocessing=False)

evaluate

evaluate(
x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None,
callbacks=None, max_queue_size=10, workers=1, use_multiprocessing=False,
return_dict=False
)