小白学习keras
tf.keras.backend.batch_dot函数
导入方式
// 定义在:tensorflow/python/keras/backend.py。
tf.keras.backend.batch_dot(
x,
y,
axes=None
)
批量化的点积
from tensorflow.python.keras import models,layers
当x和y是批量数据时,batch_dot用于计算x和y的点积,即shape为
(batch_size,: ) 。 batch_dot产生维度小于输入的张量或变量。如果维度数减少到1,我们使用expand_dims确保ndim至少为2。
参数
import tensorflow as tf
tf.keras...
或者是
from tensorflow.keras import ...
- x: nidim > 2 的keras张量或变量
- y: nidim > 2 的keras张量或变量
- axes:具有目标维度的(或单个)int列表。axes[0]和axes[1]的长度应该是相同的。
返回
一个张量的形状等于x的形状(减去求和的维数)
和y的形状(减去批处理维数和求和的维数)的串联。
如果最终的秩是1,我们将其重塑为' (batch_size, 1) '。
具体做法
- 定义模型的类型。Keras 提供了两种类型的模型:序列和模型类 API。Keras 提供各种类型的神经网络层:
#import the model and layers needed
from keras.model import Sequential
from keras.layers import Dense
model = Sequential()
- 在 model.add() 的帮助下将层添加到模型中。依照 Keras 文档描述,Keras 提供全连接层的选项(针对密集连接的神经网络)
layer Dense(units,activation=None,use_bias = True,
kernel_initiallizer = 'glorot_uniform',bias_initializer ='zeros',
kernel_regularizer =None ,bias_regularizar = None ,
activity_regularizer = None ,
kernel_constraint =None,
bias_constraint =None)
注意,密集层实现的操作:output=activation(dot(input,kernel)+bias),
其中 activation 是元素激活函数,是作为激活参数传递的,
kernel 是由该层创建的权重矩阵,bias 是由该层创建的偏置向量
(仅在 use_bias 为 True 时适用)。
- 可以使用它来添加尽可能多的层,每个隐藏层都由前一层提供输入。只需要为第一层指定输入维度:
#下面操作增加一个32 个神经元全连接神经网络,每个有13个输入,激活函数为ReLU
mode.add(Dense(32,input_dim = 13,actication='relu'))
model.add(10, activation='sigmoid')
-
损失函数和优化器
一旦模型被定义,需要选择一个损失函数和优化器。Keras 提供了多种损失函数:
(mean_squared_error、 mean_absolute_error、 mean_absolute_percentage_error、categorical_crossentropy
优化器(sgd、RMSprop、Adagrad、Adadelta、Adam 等)。
损失函数和优化器确定后,可以使用 compile(self,optimizer,loss,metrics=None,sample_weight_mode=None)来配置学习过程:
model.compile(optimizer ='rmsprop',
loss = 'categorical_crossentropy',
metrics=['accuracy']}
- 使用 fit 方法训练模型:
model.fit (data,labels,epochs=10,batch_size=32)
- 可以在 predict 方法** predict(self,x,batch_size=32,verbose=0) **的帮助下进行预测:
model.predict(test_data,batch_size=10)