【问题标题】:Setting up train/test split for use in Conv neural network设置训练/测试拆分以用于 Conv 神经网络
【发布时间】:2021-01-21 23:01:14
【问题描述】:

我想在这里使用一个 NN:

model = keras.models.Sequential([
    keras.layers.Conv2d(64, 7, activation="relu", padding="same",
                        input_shape = [40, 40, 1]),
    keras.layers.MaxPooling2D(2),
    keras.layers.Conv2D(128, 3, activation="relu", padding="same"),
    keras.layers.Conv2D(128, 3, activation="relu", padding="same"),
    keras.layers.MaxPooling2D(2),
    keras.layers.Conv2D(256, 3, activation="relu", padding="same"),
    keras.layers.Conv2D(256, 3, activation="relu", padding="same"),
    keras.layers.MaxPooling2D(2),
    keras.layers.Flatten(),
    keras.layers.Dense(128, activation="relu"),
    keras.layers.Dropout(0.5)
    keras.layers.Dense(64, activation="relu"),
    keras.layers.Dropout(0.5)
    keras.layers.Dense(8, activation="softmax")
])

但我不确定如何为其设置训练/测试拆分。我有一个带有列的数据框:

df['matrices']
df['class']

有 25k 个实例,即 25k 个矩阵,然后是 8 个“类型”的矩阵,当作为图像查看时,矩阵的元素会创建不同类型的形状。每个矩阵在“类”列中都有其对应的类型索引。每个都是 uint8 类型的 40x40 矩阵数组,没有深度。矩阵的所有元素都是 0、1 或 2。

所以 NN 的输入形状正确地是 40x40x1,但我现在不知道如何使用我拥有的信息围绕它进行设置。

【问题讨论】:

    标签: python conv-neural-network


    【解决方案1】:

    此答案非常基本,旨在帮助您入门。训练和测试模型以及为训练准备数据还有很多工作要做。

    要拆分数据并训练和测试模型,您可以执行以下操作:

    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(df['matrices], df['class'], random_state=42, test_size=.2)
    model.fit(x=X_train, y=y_train)
    

    random_state 使您的数据拆分可重复用于未来的实验。 您可以考虑将矩阵重新调整为 0 到 1 之间的值。 您可能需要根据您的应用程序和硬件规范检查 .fit 方法中的 batch_size、epochs 和 callbacks 参数。Tensorflow model.fit documentation

    您可以使用数据中的测试拆分来测试模型:

    model.evaluate(x=X_test, y=y_test)
    

    返回测试模式下模型的损失值和指标值。

    【讨论】:

      猜你喜欢
      • 2018-10-30
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2014-02-24
      • 2015-04-17
      • 2020-05-20
      • 2011-04-07
      • 1970-01-01
      相关资源
      最近更新 更多