tf.keras.layers.Conv1D(
filters=128, # 卷积过滤器的数量,对应输出的维数
kernel_size=50, # 整数,过滤器的大小,如果为一个整数则宽和高相同
strides=3, # 横向和纵向的步长,如果为一个整数则横向和纵向相同
padding='same',
activation=tf.nn.relu)
(input_ecg)
代码:
from keras.layers import (Input, Reshape)
import tensorflow as tf
input = Input(shape=(600, 600, 3), batch_size=2)
x = tf.keras.layers.Conv2D(64, (1, 1), strides=(1, 1), name='conv1')(input)
print(x)
batch-size中文翻译是批量大小,所谓的批量是指学习样本的数量,因为在训练模型时需要将祥本图像全部读入到内存中,这么做的原因是提升收敛速度。
epochs:迭代的次数。
结果:
KerasTensor(type_spec=TensorSpec(
shape=(2, 600, 600, 64), dtype=tf.float32, name=None), name='conv1/BiasAdd:0', description="created by layer 'conv1'")
神经网络的卷积核(convolutional kernel)
例如输入224x224x3(rgb三通道),要得到输出是32位深度,选取卷积核尺寸为5x5。那么我们需要32个卷积核**(不同的卷积核的矩阵参数不同)**,每一个的尺寸为5x5x3(最后的3就是原图的rgb位深3),每一个卷积核的每一层是5x5(共3层)分别与原图的每层224x224卷积,然后将得到的三张新图叠加(算术求和),变成一张新的feature map。 每一个卷积核都这样操作,就可以得到32张新的feature map了。 也就是说:不管输入图像的深度为多少,经过一个卷积核(filter),最后都通过下面的公式变成一个深度为1的特征图。不同的filter可以卷积得到不同的特征,也就是得到不同的feature map。。。
输入矩阵格式:四个维度,依次为:样本数、图像高度、图像宽度、图像通道数
输出矩阵格式:与输出矩阵的维度顺序和含义相同,但是后三个维度(图像高度、图像宽度、图像通道数)的尺寸发生变化。
权重矩阵(卷积核)格式:同样是四个维度,但维度的含义与上面两者都不同,为:卷积核高度、卷积核宽度、输入通道数、输出通道数(卷积核个数)
输入矩阵、权重矩阵、输出矩阵这三者之间的相互决定关系
卷积核的输入通道数(in depth)由输入矩阵的通道数所决定。
输出矩阵的通道数(out depth)由卷积核的输出通道数所决定。
输出矩阵的高度和宽度(height, width)这两个维度的尺寸由输入矩阵、卷积核、扫描方式所共同决定。
import tensorflow as tf
import keras
from keras import Sequential
from keras.layers import SimpleRNN
model=Sequential()
model.add(SimpleRNN(3,input_shape=(None,4),activation='relu'))
model.summary()
U=model.get_weights()[0] #输入层和循环层之间的权重,维度为(5*4)
W=model.get_weights()[1] #循环层与循环层之间的权重,维度为(3*3)
bias=model.get_weights()[2] #隐藏层的偏置项,3个
记忆体的个数就是:【-0.9,0.2,0.2】(个人看法)
每个循环核有多个记忆体,记忆体内存储着每个时刻的状态信息ℎ
我们可以设定记忆体的个数从而改变记忆容量,当记忆体个数被指定、输入,输出维度被指定,周围这些待训练参数的维度也就被限定了