python - 喀拉斯 : Why does Sequential and Model give different outputs?

标签 python neural-network keras recurrent-neural-network keras-layer

我正在使用 Keras 计算一个简单的序列分类神经网络。我尝试了不同的模块,发现有两种创建顺序神经网络的方法。

第一种方式是使用Sequential API。这是我在很多教程/文档中发现的最常见的方式。 这是代码:

# Sequential Neural Network using Sequential()
model = Sequential()
model.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='relu', input_shape=(27 , 300,)))
model.add(MaxPooling1D(pool_size=2))
model.add(LSTM(100))
model.add(Dense(len(7, activation='softmax'))
model.summary()

第二种方法是使用模型 API 从头开始​​构建去序神经网络。这是代码。

# Sequential neural network using Model()   
inputs = Input(shape=(27 , 300))
x = Conv1D(filters=32, kernel_size=3, padding='same', activation='relu')(inputs)
x = MaxPooling1D(pool_size=2)(x)
x = LSTM(100)(x)
predictions = Dense(7, activation='softmax')(x)
model = Model(inputs=inputs, outputs=predictions)
model.summary()

我用固定种子 (np.random.seed(1337)) 训练它,训练数据相同,但我的输出不同...... 知道总结的唯一区别是第一层输入与Model API。

有没有人知道为什么这个神经网络不同? 如果没有,为什么我会得到不同的结果?

谢谢

最佳答案

您仅在 numpy 中设置随机种子,而不是在 tensorflow 中设置随机种子(以防在您的情况下它是 keras 的后端)。尝试将此添加到您的代码中:

from numpy.random import seed
seed(1337)
from tensorflow import set_random_seed
set_random_seed(1337)

关于这个主题的详细文章here

关于python - 喀拉斯 : Why does Sequential and Model give different outputs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48562099/

相关文章:

python - 如何从字符串列表中导出二进制数组

python - 使用 python 在 arcmap 中创建新的 shapefile

python - 塑造神经网络分类输出维度?

python - 在 Keras 中对具有不同分辨率的图像进行训练和验证

python - 使用现有字段作为 _id 使用 elasticsearch dsl python DocType

python - 在 Python 中使用日期时间以及如何从 Excel 导入

tensorflow - ValueError : Tensor Tensor(. ..) 不是该图的元素。使用全局变量 keras 模型时

python - 神经网络 : estimating sine wave frequency

python - 具有高级 API 的 tensorflow 中的 L2 正则化

keras - 如何在IDE上激活VirtualEnv