from keras.layers import merge, Conv1D, Input, MaxPool1D, Dense, Dropout, GlobalAveragePooling1D
from keras.models import Model,load_model,optimizers
from keras.callbacks import ModelCheckpoint
import numpy as np
model_path = r"F:\Project&Learn\肌电信号\1D-CNN\model//"
# 传感器数量
num_senor = 6
# 周期采样数
time_periods = 100
# 分类个数
num_class = 4
def build_1d_cnn():
input_layer = Input(shape=(time_periods, num_senor))
# block_1
x = Conv1D(8, 3, activation='relu', name='block_1_1')(input_layer)
x = Conv1D(8, 3, activation='relu', name='block_1_2')(x)
# block_2
a = Conv1D(8, 1, padding='same', activation='relu', name='block_2_a')(x)
b = Conv1D(8, 1, padding='same', activation='relu', name='block_2_b')(x)
b = Conv1D(8, 3, padding='same', activation='relu', name='block_2_b2')(b)
c = Conv1D(8, 1, padding='same', activation='relu', name='block_2_c')(x)
c = Conv1D(8, 5, padding='same', activation='relu', name='block_2_c2')(c)
d = MaxPool1D(3, padding='same', strides=1, name='block_2_d')(x)
d = Conv1D(8, 1, padding='same', activation='relu', name='block_2_d2')(d)
x = merge([a, b, c, d], mode="concat", concat_axis=2)
# block_3
x = MaxPool1D(3, name='block_3_0')(x)
a = Conv1D(16, 1, padding='same', activation='relu', name='block_3_a')(x)
b = Conv1D(16, 1, padding='same', activation='relu', name='block_3_b')(x)
b = Conv1D(16, 3, padding='same', activation='relu', name='block_3_b2')(b)
c = Conv1D(16, 1, padding='same', activation='relu', name='block_3_c')(x)
c = Conv1D(16, 5, padding='same', activation='relu', name='block_3_c2')(c)
d = MaxPool1D(3, padding='same', strides=1, name='block_3_d')(x)
d = Conv1D(16, 1, padding='same', activation='relu', name='block_3_d2')(d)
x = merge([a, b, c, d], mode="concat", concat_axis=2)
# output_layer
x = MaxPool1D(2, padding='same', strides=2, name='op_1')(x)
x = Dropout(0.5, name='op_2')(x)
x = GlobalAveragePooling1D(name='op_3')(x)
x = Dropout(0.5, name='op_4')(x)
output_layer = Dense(num_class, activation='softmax', name='op_5')(x)
model = Model(input=input_layer, outputs=output_layer)
# print(model.summary())
return model
def fit_with_cnn_model(x_train, y_train, my_model):
# 回调函数
callbacks_list = [
ModelCheckpoint(
filepath=model_path+'event_model.{epoch:02d}-{val_loss:.2f}.h5',
monitor='val_loss', save_best_only=False,
period=500
)
]
model.compile(loss='categorical_crossentropy',
optimizer=optimizers.Adam(lr=1e-3,decay=1e-5),
metrics=['accuracy'])
Batch_size = 32
Epochs = 4000
history = my_model.fit(
x_train,
y_train,
batch_size=Batch_size,
epochs=Epochs,
callbacks=callbacks_list,
validation_split=0.2,
verbose=1
)
model.save("model.h5")
def get_label(index):
label = np.zeros(num_class)
label[index] = 1
return label
def data_input():
# load label
Y = []
for i in range(num_class):
for j in range(500):
label = get_label(i)
Y.append(label)
Y = np.array(Y)
# load data
# a = np.load("X.npy")
X = np.load("X.npy")
# X = np.append(a,X, axis=0)
index = np.arange(2000)
np.random.shuffle(index)
X_train = X[index]
Y_train = Y[index]
return X_train, Y_train
if __name__ == '__main__':
model = build_1d_cnn()
# model = load_model("model2.h5")
X, Y = data_input()
fit_with_cnn_model(X, Y, model)
没有合适的资源?快使用搜索试试~ 我知道了~
1D-CNN_1D-CNN_1DCNN_CNN_CNN-_CNN时间序列_
共3个文件
py:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 23 下载量 16 浏览量
2021-10-01
08:49:36
上传
评论 3
收藏 3KB RAR 举报
温馨提示
1D-CNN的模型、训练与预测。用于时间序列的一种信号处理。
资源推荐
资源详情
资源评论
收起资源包目录
1D-CNN.rar (3个子文件)
1D-cnn.py 3KB
tarin_.py 4KB
predict_.py 879B
共 3 条
- 1
kikikuka
- 粉丝: 66
- 资源: 4774
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页