Python深度學習筆記(三)二分類模型

2021-10-05 19:16:52 字數 2971 閱讀 1286

繼續來寫我的學習筆記 -----二分類問題

我從資料的處理,模型的構架,訓練過程,驗證模型及損失和精度的比較這幾個方面來介紹。

from keras.datasets import  imdb

(train_data,train_labels),(test_data,test_labels) = imdb.load_data(num_words=10000)

import numpy as np

def vectorize_sequences(sequences,dimension=10000):

results = np.zeros((len(sequences),dimension))

for i,sequence in enumerate(sequences):

results[i,sequence]=1.

return results

x_train=vectorize_sequences(train_data)

x_test=vectorize_sequences(test_data)

y_train=np.asarray(train_labels).astype('float32')

y_test =np.asarray(test_labels).astype('float32')

from keras import models

from keras import layers

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'])

下面給出**:

from keras.datasets import  imdb

import numpy as np

from keras import models

from keras import layers

import matplotlib.pyplot as plt

(train_data,train_labels),(test_data,test_labels) = imdb.load_data(num_words=10000)

def vectorize_sequences(sequences,dimension=10000):

results = np.zeros((len(sequences),dimension))

for i,sequence in enumerate(sequences):

results[i,sequence]=1.

return results

x_train=vectorize_sequences(train_data)

x_test=vectorize_sequences(test_data)

y_train=np.asarray(train_labels).astype('float32')

y_test =np.asarray(test_labels).astype('float32')

print(x_train[0])

x_val=x_train[:10000]

partial_x_train=x_train[10000:]

y_val = y_train[:10000]

partial_y_train=y_train[10000:]

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(partial_x_train,

partial_y_train,

epochs=20,

batch_size=512,

validation_data=(x_val,y_val))

history_dict=history.history

loss_values=history_dict['loss']

val_loss_values=history_dict['val_loss']

epochs=range(1,len((loss_values)+1))

plt.plot(epochs,loss_values,'bo',label='training loss')

plt.plot(epochs,val_loss_values,'b',label='validation loss')

plt.title('training and validation loss')

plt.xlabel('epochs')

plt.ylabel('loss')

plt.legend()

plt.show()

排序系列三 二分查詢法

不錯,因為考慮到在實際專案中,排序和查詢經常是兩個好 二者息息相關,相互依存。故為了大家更好的接手老闆交給你的實際工作,而不至於被說成是 新兵蛋子 我覺得大家有必要和我來學學這個查詢法。言歸正傳,首先假定乙個有序整數序列儲存在陣列list max 中,即list 0 1 num search 2 n...

WQS二分 學習筆記

我的理解 不一定很對 大概就是某個東西越多總貢獻越大,要求剛好取n個時的最優解。可以把 dp 狀態裡記的取的個數這一維去掉,而設乙個 co st,取 k 個物品,總貢獻要多減去cost k,然後 dp cos t 越大,物品數取越少。二分 co st使得 dp 得到的答案剛好取了 n 個物品。設 g...

學習筆記 二分查詢

二分查詢的前提必須是乙個有序的陣列 這裡提供兩個 乙個是查詢乙個值的一個下標,另乙個是查詢乙個值的一組下標 二分查詢 注意 前提是該陣列是有序的 param arr 查詢的陣列 param left 左邊索引 param right 右邊索引 param value 要查詢的值 return 要查詢...