Tensorflow 如何从Keras 1和Keras 2获得与Conv1D相同的结果

Tensorflow 如何从Keras 1和Keras 2获得与Conv1D相同的结果,tensorflow,keras,conv-neural-network,keras-layer,Tensorflow,Keras,Conv Neural Network,Keras Layer,我在CPU上运行了相同的代码(使用相同的数据),首先使用keras 1.2.0,然后在keras与TensorFlow后端的两个代码中使用keras 2.0.3。 问题来自Conv1D,许多参数都会更改,我想从keras 1.2.0复制相同的Conv1D。因为我对keras 2没有相同的结果 这是我在Keras 1上的代码: def core\u model\u CNN(序列输入 ,序列长度 ,词汇量 ,n_out ,嵌入 ,嵌入矩阵 ,过滤器大小=[1,2,3] ,num_filters=10

我在CPU上运行了相同的代码(使用相同的数据),首先使用keras 1.2.0,然后在keras与TensorFlow后端的两个代码中使用keras 2.0.3。 问题来自Conv1D,许多参数都会更改,我想从keras 1.2.0复制相同的Conv1D。因为我对keras 2没有相同的结果

这是我在Keras 1上的代码:

def core\u model\u CNN(序列输入
,序列长度
,词汇量
,n_out
,嵌入
,嵌入矩阵
,过滤器大小=[1,2,3]
,num_filters=100
,下降=0.1):
嵌入=嵌入(输入尺寸=词汇表尺寸,输出尺寸=嵌入尺寸
,输入长度=序列长度,权重=[嵌入矩阵],可训练=假)
嵌入的\u序列=嵌入(序列\u输入)
过滤器大小=过滤器大小
convs=[]
对于过滤器尺寸中的fsz:
conv=Conv1D(nb_过滤器=32,
过滤器长度=fsz,
border_mode='valid',
激活='relu',
子样本_长度=1)(嵌入_序列)
pool=maxpoolg1d(pool_length=sequence_length-fsz+1)(conv)
flattemax=flatte()(池)
convs.append(最大值)
l_merge=concatenate(convs,axis=1)
#展平=展平()(l\U合并)
dense1=密集(300,激活='swish')(l_合并)
dense1=BatchNormalization()(dense1)
dense1=稠密(250,激活='swish')(dense1)
dense1=BatchNormalization()(dense1)
dense1=稠密(200,激活='swish')(dense1)
dense1=BatchNormalization()(dense1)
dense1=稠密(150,活化='swish')(dense1)
dense1=BatchNormalization()(dense1)
dense1=稠密(100,激活='swish')(dense1)
dense1=BatchNormalization()(dense1)
输出=密集(单位=n\u out,激活=softmax',内核正则化器=regularizers.l2(2),(密度1)
返回输出
在Keras 2上它变成了

conv=tf.keras.layers.Conv1D(filters=params['nb_filter'],
内核大小=fsz,
padding='valid',
激活='relu',
偏差\u初始值设定项='零',
步幅=1)(嵌入的_序列)
池=tf.keras.layers.MaxPoolg1d(池大小=序列长度-fsz+1)(conv)

我在这之后做了修改,但结果不一样。

您好。请提供更多详细信息和MWE()。嗨,我更新我的问题