最近のpythonとkeras問題のまとめ190905

9780 ワード

最近のpython問題の要約
  • pythonエラープロンプト「non-default argument follows default argument」
  • pandas.read_csv()エラーOSError:Initializing from file failed
  • ValueError:Input 0 is incompatible with layer lstm_1: expected ndim=3,found ndim=4
  • マルチ入力モデル
  • pythonインポートデータエラー:UnicodeDecodeError:'utf-8'codec can't decode byte 0 xb 5 in position 0:invalid start
  • pythonエラープロンプト「non-default argument follows default argument」
    デフォルト値を含むパラメータは、デフォルト値を含まない後に配置する必要があります.
    def ConvBNReluUnit(kernel_size = 8,index = 0,num=1,input):
    

    解決:パラメータの位置を入れ替える
    def ConvBNReluUnit(input1,kernel_size = 8,index = 0,num=1):
    

    pandas.read_csv()エラーOSError:Initializing from file failed
    一般的には、ファイル名ではなくパスである関数パラメータと、中国語である関数パラメータの2つのケースがあります.勉強する
    私が問題になったのはパスに中国語が含まれているからです.解決策:
    da4=pd.read_csv('F:\\    .csv',engine='python')
    

    ValueError:Input 0 is incompatible with layer lstm_1: expected ndim=3,found ndim=4
    モデルにlstmレイヤを追加すると、lstmレイヤに3次元データが必要で、私のは4次元です.
    次に例を示します.
    res_stack_d (Conv2D) (None, 125, 2, 16) 784
    res_stack_e (Conv2D) (None, 63, 2, 32) 1568
    したがって、reshape次元数を3次元とする必要があります.ここではkeras内のReshape関数を使用します.
    解決:
        model.add(Conv2D(64, kernel_size=(3, 1), strides=(2, 1), padding='valid'))
        model.add(Conv2D(64, kernel_size=(3, 1), strides=(1, 1), padding='same'))
        model.add(Reshape((60,64)))
        model.add(LSTM(units=100,return_sequences = True))
    

    ボリュームレイヤの出力を事前に計算し、reshape操作を行います.ここには誤解があります.なぜlstm層に必要なのは3次元データなのに、私のreshape内には2次元(60,64)しかありませんか.実はここで1つのNoneが少なくなった正常なモデルはサンプルの個数に対してすべて固定的な要求をしないので、入力モデルのは(None,10241024)モデルの中間層でも同様の(None,10241024)の入力を処理することができて、Noneを計算するのはちょうど3次元で、ここのReshape関数の数はこのNoneを考慮しないで、直接後の2次元を入力してReshapeを行います
    マルチインプットモデル
    参考リンク多入力モデルやResnetのようなネットワークを使用する場合は、使用できないことを理解しています.
    model = Sequential()
    

    このシーケンスモデルではなく、APIモデルを直接使用する必要があります.具体的には、例えば、
        sig_input = Input(shape=input_shape,name='Input')
        x = sig_input
        x = Conv2D(8, kernel_size=(3, 1), strides=(2, 1), padding='same', input_shape = (X_train.shape[1:]),name =conv_name_base+"a")(x)
        x = BatchNormalization(name=bn_name_base + 'a')(x)
        #x = add([x, sig_input])
        #x = Activation('relu')(x)
        x = Conv2D(8, kernel_size=(3, 1), strides=(1, 1), padding='same',name =conv_name_base+"b")(x)
    

    pythonインポートデータエラー:UnicodeDecodeError:‘utf-8’codec can’t decode byte 0 xb 5 in position 0:invalid start
    https://blog.csdn.net/wang7807564/article/details/78164855 https://blog.csdn.net/qq_35892623/article/details/82941473私にはあまり役に立たないので,皆さんにいい方法があれば教えてください.
    私の最後の解決策は関数ファイル内の中国語の注釈を削除することしかできません...