代码之家  ›  专栏  ›  技术社区  ›  Nick X Tsui

Tensorflow模型培训:缺少1个必需的位置参数:“self”

  •  0
  • Nick X Tsui  · 技术社区  · 6 年前

    我正试图按照以下示例练习神经网络分类器: Train your first neural network: basic classification ,这是我的代码,直到模型培训为止:

    import tensorflow as tf
    from tensorflow import keras
    
    import numpy as np
    from matplotlib.pyplot import show
    import matplotlib.pyplot as plt
    
    from matplotlib.pyplot import figure
    from matplotlib.pyplot import imshow
    from matplotlib.pyplot import colorbar
    from matplotlib.pyplot import axis
    from matplotlib.pyplot import plot
    from matplotlib.pyplot import show
    
    print(tf.__version__)
    
    fashion_mnist = keras.datasets.fashion_mnist
    
    (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
    
    
    #figure(); imshow(train_images[1]); colorbar(); axis('auto') 
    
    class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 
                   'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
    
    N1, N2, N3 = test_images.shape
    
    train_images = train_images / 255.0
    test_images  = test_images / 255.0
    
    model = keras.Sequential
    ([
        keras.layers.Flatten(input_shape=(N2, N3)),
        keras.layers.Dense(128, activation=tf.nn.relu),
        keras.layers.Dense(10, activation=tf.nn.softmax)
    ])
    
    
    model.compile(optimizer='adam', 
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])
    
    
    model.fit(train_images, train_labels, epochs=5)
    

    它返回的错误是

    TypeError: _method_wrapper() missing 1 required positional argument: 'self'
    

    发生在

    model.compile(optimizer='adam', 
                      loss='sparse_categorical_crossentropy',
                      metrics=['accuracy'])
    

    我在谷歌上搜索了一下,似乎

    m = model()
    m.compile()
    

    可以避免“自我”错误。然而,它得到了新的错误,培训仍然没有发生。

    Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz
    32768/29515 [=================================] - 0s 0us/step
    Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz
    26427392/26421880 [==============================] - 1s 0us/step
    Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz
    8192/5148 [===============================================] - 0s 0us/step
    Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz
    4423680/4422102 [==============================] - 0s 0us/step
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   Achintha Ihalage    6 年前

    Sequential() ,我只是把所有的东西都拿出来,一层一层地添加到 model .

    import tensorflow as tf
    from tensorflow import keras
    from keras.models import Sequential
    from keras.layers import Dense
    import numpy as np
    from matplotlib.pyplot import show
    import matplotlib.pyplot as plt
    
    from matplotlib.pyplot import figure
    from matplotlib.pyplot import imshow
    from matplotlib.pyplot import colorbar
    from matplotlib.pyplot import axis
    from matplotlib.pyplot import plot
    from matplotlib.pyplot import show
    
    print(tf.__version__)
    
    fashion_mnist = keras.datasets.fashion_mnist
    
    (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
    
    
    #figure(); imshow(train_images[1]); colorbar(); axis('auto') 
    
    class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 
                   'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
    
    N1, N2, N3 = test_images.shape
    
    train_images = train_images / 255.0
    test_images  = test_images / 255.0
    # model = Sequential
    # ([
    #     keras.layers.Flatten(input_shape=(N2, N3)),
    #     keras.layers.Dense(128, activation=tf.nn.relu),
    #     keras.layers.Dense(10, activation=tf.nn.softmax)
    # ])
    
    model= Sequential()
    model.add(Dense(128, activation=tf.nn.relu))
    model.add(Dense(10, activation=tf.nn.softmax))
    
    model.compile(optimizer='adam', 
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])
    
    
    model.fit(train_images.reshape(len(train_images),784), train_labels, epochs=5)
    

    使用此代码,它的运行方式如下所示。

    32/60000 [..............................] - 预计到达时间:3:02-损失:2.6468- 行政协调会:0

    1344/60000 [..............................] - 预计到达时间:6秒-损失:1.3037- 行政协调会:0.5

    2816/60000[>………]预计到达时间:4s-损失:1.0207-

    4256/60000[=>……]-预计到达时间:3秒-损失:0.9073-

    5632/60000[=>……]预计到达时间:2秒-损失:0.8394-

    7104/60000[=>……]-预计到达时间:2秒-损失:0.7912- 行政协调会:0.7