【发布时间】:2018-07-11 17:45:13
【问题描述】:
我正在使用 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)) 对其进行了训练,使用相同的训练数据并且我的输出不同... 知道摘要中唯一的区别是模型 API 的第一层输入。
有没有人知道为什么这个神经网络是不同的? 如果没有,为什么我会得到不同的结果?
谢谢
【问题讨论】:
-
价值观有何不同?您使用的是哪种环境?
-
即使您多次重新训练同一个模型,由于权重的随机初始化也可能会发生微小的差异。您可以通过运行 Sequential API 模型几次来检查。
-
@MatiasValdenegro 输出确实不同,由于我工作的公司,我无法向您展示结果。我正在将 python3 与使用 tensorflow 后端的 Keras 一起使用。
-
@Manngo 好的,谢谢。我有办法修复权重的种子吗?
-
只是为了确保没有发生任何随机事件,您是否尝试过两次训练相同的网络并查看是否得到相同的结果?事实并非如此,有些东西仍然是随机的
标签: python neural-network keras recurrent-neural-network keras-layer