keras.datasets インポートIMDB #NUM_WORDSは、評論家がロードされます頻繁に以前万を維持するために使用される単語の内部の評論家を確保するため、データのロード中にいくつかのまれな珍しい単語は破棄しますとき TEST_DATA(、(train_data、train_labelsを) 、test_labels)= imdb.load_data(NUM_WORDS = 10000)
プリント(train_data [0]) 、印刷(train_labels [0])
#周波数と単語間の対応は、単語の頻度にキーワードに対応するハッシュテーブルword_index、値相当に格納されている word_index = imdb.get_word_index() #1 、我々はそれを逆にするテーブルの対応関係周波数は、値が単語である鍵となる reverse_word_index = dictの([(値、キー)のために(キー、値)にword_index.items()]) 「」 ' 値に含まtrain_data値で1,2,3特別な意味を示すために、単語を対応していない、「塗りつぶし」、2は「テキストの開始」を示し、を表す 3 、我々はtrain_dataから値を読み取るときに1,2,3で、「不明」のために値が4である場合、我々は、対応する単語の開始まで4から、それを無視するべきで は発生最も高い単語の頻度を表し 「」 ' テキスト = 『』 のための WORDCOUNT でtrain_data [0]: IF WORDCOUNT> 3 : テキスト + = reverse_word_index。 (取得WORDCOUNT - 3) テキスト + = " " 他に: テキスト + = " ?" 印刷(テキスト)
インポートnumpyのAS NP DEF oneHotVectorizeText(ALLTEXT、寸法= 10000 ): 「」 ' ALLTEXTは、すべてのテキストの集合である10,000元素を含む1次元ベクトルのそれぞれに対応するテキストは、Xの合計は、テキスト・アイテムは、その想定される 関数はXを生成しますこうして10,000 X行を含む二次元行列を形成する物品1万次元ベクトル、 '' ' oneHotMatrix = np.zeros(()(ALLTEXTをlenは、ディメンション)) のために I、wordFrequence で列挙(ALLTEXT): oneHotMatrix [ I、wordFrequence] = 1.0 リターンoneHotMatrix x_train = oneHotVectorizeText(train_data) x_test = oneHotVectorizeText(TEST_DATA) 印刷(x_train [0]) y_train= np.asarray(train_labels).astype(' のfloat32 ' ) y_test = np.asarray(test_labels).astype(' のfloat32 ')
keras インポートモデル から keras インポートレイヤー モデル = models.Sequential() #第1のネットワークと第2の層を構成する、第一層は10000個のノードを有し、第二層は、16個のノード有し #高密度平均、第一層各ノードは、第二の層のすべてのノードに接続されている #の機能RELU相当RELU(X)= MAX(0、X) model.add(layers.Dense(16、アクティベーション= ' RELU '(10000、= input_shape 、))) #第三層16個のニューロンは、第2層のノードと各ノードが相互に接続された第3の層の各 model.add(layers.Dense(16、アクティベーション= 「RELU 」)) #第0-1の出力値との間の唯一のノード層の確率、 model.add(layers.Dense(1、アクティベーション= ' シグモイド"))
インポートmatplotlib.pyplot PLTとして X = np.linspace(-10、10 ) y_relu = np.array([0 *アイテムもしアイテム<0 他のアイテムのためのアイテムでX]) plt.figure() plt.plot(X、 y_relu、ラベル = ' ReLu ' ) plt.legend()
keras インポート損失 から keras インポートメトリック から keras インポートオプティマイザ (オプティマイザmodel.compile = optimizers.RMSprop(LR = 0.001)、損失= ' binary_crossentropy '、メトリック= [ ' 精度' ])
x_val = x_train [10000 ] partial_x_train = x_train [10000 :] y_val = y_train [10000 ] partial_y_train = y_train [10000 :] 歴史 = model.fit(partial_x_train、partial_y_train、エポック= 20、BATCH_SIZE = 512 、 validation_data =(x_val 、y_val))
train_result = history.history プリント(train_result.keys())
import matplotlib.pyplot as plt acc = train_result['acc'] val_acc = train_result['val_acc'] loss = train_result['loss'] val_loss = train_result['val_loss'] epochs = range(1, len(acc) + 1) #绘制训练数据识别准确度曲线 plt.plot(epochs, loss, 'bo', label='Trainning loss') #绘制校验数据识别的准确度曲线 plt.plot(epochs, val_loss, 'b', label='Validation loss') plt.title('Trainning and validation loss') plt.xlabel('Epochs') plt.ylabel('Loss') plt.legend() plt.show()
model = models.Sequential() model.add(layers.Dense(16, activation='relu', input_shape=(10000,))) model.add(layers.Dense(16, activation='relu')) model.add(layers.Dense(1, activation='sigmoid')) model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy']) history = model.fit(x_train, y_train, epochs=4, batch_size=512) results = model.evaluate(x_test, y_test) print(results)
model.predict(x_test)