【问题标题】:How do I make a minimal and reproducible example for neural networks?如何为神经网络制作一个最小且可重复的示例?
【发布时间】:2020-04-13 16:47:44
【问题描述】:

我想知道如何为 Stack Overflow 制作一个最小且可重现的深度学习示例。我想确保人们有足够的信息来查明我的代码的确切问题。只提供回溯就足够了吗?

    c:\users\samuel\appdata\local\programs\python\python35\lib\site-packages\keras\engine\training_utils.py 
                         in standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)
        135                             ': expected ' + names[i] + ' to have shape ' +
        136                             str(shape) + ' but got array with shape ' +
    --> 137                             str(data_shape))
        138     return data
        139 

或者我应该简单地发布错误消息?

值错误:检查输入时出错:预期 dense_1_input 具有形状 (4,) 但得到了形状为 (1,) 的数组

【问题讨论】:

    标签: python tensorflow keras neural-network pytorch


    【解决方案1】:

    以下是制作可重现的、最小的深度学习示例的一些技巧。无论是 KerasPytorch 还是 Tensorflow,这都是很好的建议。

    • 我们无法使用您的数据,但在大多数情况下,这并不重要。我们所需要的只是正确的形状。
      • 使用随机生成的正确形状的数字。
        • 例如,np.random.randint(0, 256, (100, 30, 30, 3) 用于 100 张尺寸为 30x30 的彩色图片
        • 例如,np.random.choice(np.arange(10), 100) 用于 10 个类别的 100 个样本
    • 我们不需要查看您的整个管道。
      • 只提供运行代码的最低要求。
    • 充分利用Keras 及其调试功能。
      • 包括回溯。它很可能会指出确切的问题。
    • 神经网络就是要拟合正确的形状。
      • 至少始终提供输入形状。
    • 使其易于测试和重现。
      • 发布您的整个神经网络架构。
      • 包括您的库导入。定义所有变量。

    这是一个完美最小且可重现的示例:


    “我有一个错误。当我运行这段代码时,它给了我这个错误:”

    ValueError:检查目标时出错:预期dense_2 的形状为(10,),但得到的数组形状为

    “这是我的架构,以及生成的数据:”

    import numpy as np
    import keras
    from keras.models import Sequential
    from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D
    
    xtrain, xtest = np.random.rand(2, 1000, 30, 30, 3)
    ytrain, ytest = np.random.choice(np.arange(10), 2000).reshape(2, 1000) 
    
    model = Sequential([
        Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=xtrain.shape[1:]),
        Conv2D(64, (3, 3), activation='relu'),
        MaxPooling2D(pool_size=(2, 2)),
        Flatten(),
        Dense(128, activation='relu'),
        Dense(10, activation='softmax')])
    
    model.compile(loss=keras.losses.categorical_crossentropy,
                  optimizer=keras.optimizers.Adam(),
                  metrics=['accuracy'])
    
    model.fit(xtrain, ytrain,
              batch_size=16,
              epochs=10,
              validation_data=(xtest, ytest))
    

    【讨论】:

      猜你喜欢
      • 2017-11-10
      • 1970-01-01
      • 2018-11-09
      • 2021-05-20
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多