以下是一个两层的一维卷积神经网络的示例代码:
- import tensorflow as tf
-
- # 输入层
- input_shape = (batch_size, input_length, input_channels)
- inputs = tf.keras.Input(shape=input_shape)
-
- # 第一层卷积层
- conv1_filters = 32
- conv1_kernel = 3
- conv1_pool = 2
- conv1_padding = 'same'
- conv1_activation = 'relu'
-
- conv1 = tf.keras.layers.Conv1D(
- filters=conv1_filters,
- kernel_size=conv1_kernel,
- padding=conv1_padding,
- activation=conv1_activation)(inputs)
-
- conv1_pool = tf.keras.layers.MaxPooling1D(pool_size=conv1_pool)(conv1)
-
- # 第二层卷积层
- conv2_filters = 64
- conv2_kernel = 3
- conv2_pool = 2
- conv2_padding = 'same'
- conv2_activation = 'relu'
-
- conv2 = tf.keras.layers.Conv1D(
- filters=conv2_filters,
- kernel_size=conv2_kernel,
- padding=conv2_padding,
- activation=conv2_activation)(conv1_pool)
-
- conv2_pool = tf.keras.layers.MaxPooling1D(pool_size=conv2_pool)(conv2)
-
- # 展平层
- flatten = tf.keras.layers.Flatten()(conv2_pool)
-
- # 全连接层
- fc_units = 128
- fc_activation = 'relu'
-
- fc = tf.keras.layers.Dense(units=fc_units, activation=fc_activation)(flatten)
-
- # 输出层
- output_units = num_classes
- output_activation = 'softmax'
-
- outputs = tf.keras.layers.Dense(units=output_units, activation=output_activation)(fc)
-
- # 定义模型
- model = tf.keras.Model(inputs=inputs, outputs=outputs)
这个模型包括两层卷积层,每一层都是由一个卷积层和一个最大池化层构成的。输入层是一个一维张量,形状为(batch_size, input_length, input_channels),输出层是一个softmax分类器。模型可以通过下面的代码进行编译和训练:
- model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
-
- model.fit(x_train, y_train, batch_size=batch_size, epochs=num_epochs, validation_data=(x_val, y_val))
其中x_train和y_train是训练数据和标签,x_val和y_val是验证数据和标签。