Sequentialモデル

3117 ワード

シーケンスモデルは、複数のネットワーク層の線形スタックであり、sequentialモデルにlayerのlistを渡すことでモデルを構築できます.
from keras.models import Sequential
from keras.layers import Dense,Activation

model=Sequential([Dense(32,unitis=784),Activation('relu'),Dense(10),Activation('softmax')])


通過することもできます.add()を1つずつ追加
model=Sequential()
model.add(Dense(32,input_shape=(784,))
model.add(Activation('relu'))

入力データのshapeを指定
モデルは入力データのshapeを知る必要があるため、sequentialの第1層は入力データshapeに関するパラメータを受け入れる必要があり、後ろの各層は自動的に中間データのshapeを導出することができるので、各層に指定する必要はありません(第1層は必ず指定します)、いくつかの方法で第1層のshapeを指定します
  • input_を渡すshapeのキーワードは第1層に、input_shapeは1つの数字であってもよく、Noneを伝達してもよく、Noneを入力すると、この位置が任意の正数であることを示し、データのbatchはその中に含まれるべきではない、
  • .
  • 一部の2 Dレイヤ、例えばdenseは、その入力次元を指定することによってinput_dimは入力データを指定するshapeを隠し、一部の3 Dレイヤはinput_を指定することができる.dimとinput_length入力のshapeを指定します-入力に固定サイズのbatch_を指定する必要がある場合はsizeはbatch_を渡すことができますsizeパラメータは1つのレイヤに入ります.たとえば、入力したいテンソルbatchのサイズが31、shapeが(6、8)の場合、batch_を渡す必要があります.sizeとinput_shape=(6,8)

  • コンパイル
    モデルを訓練する前に、学習プロセスをcompileで構成する必要があります.compileは3つのパラメータを受け入れます.
  • オプティマイザoptimizer:このパラメータは、rmsprop、adagrad、またはOptimizerクラスのオブジェクトなど、事前定義されたオプティマイザの名前として指定できます.詳細は、次のとおりです.http://keras-cn.readthedocs.io/en/latest/other/optimizers/
  • 損失関数:事前定義された損失関数の名前を指定します.categorical_crossentropy,mes,詳細は以下を参照:http://keras-cn.readthedocs.io/en/latest/other/objectives/
  • 指定リストのmetrics:分類問題については、一般的に額metrics[「accuracy」]に設定され、指標は予め定義された名前であってもよいし、ユーザーが作成した関数であってもよい.参考:http://keras-cn.readthedocs.io/en/latest/getting_started/other/metrices.md
  • # For a multi-class classification problem
    model.compile(optimizer="rmsprop",loss='categorical_crossentropy',metrics=['accuracy'])
    
    # For a binary classification problem
    model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])
    
    
    # For a mean squared error regression problem
    model.compile(optimizer='rmsprop',loss='mse')
    
    #     metrics
    import keras.backend as k
    def mean_pred(y_true,y_pred):
        return(k.mean(y_pred))
    
    model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy',mean_pred])
    

    トレーニング
    kerasは一般に入力データとラベルのデータ型としてNumpy配列を用いる.トレーニングモデルではfit関数が一般的に使用されます
    model=Senquential()
    model.add(Dense(32,activation='relu',input_dim=100))
    model.add(Dense(1,activation='sigmod',))
    model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['acuracy'])
    #      
    import numpy as np
    data=np.random.random((1000,100))
    labels=np.random.randint(2,size=(1000,1))
    
    # train model
    model.fit(data,lables,epochs=10,batch_size=32)
    
    # 10 classes
    model=Sequential()
    model.add(Dense(32,activation='relu',input_dim=100))
    model.add(Dense(10,activation='softmax'))
    model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])
    
    #  create dummy data
    import numpy as np
    data=np.random.random((1000,100))
    labels=np.random