keras windows pycharm環境搭建
阿新 • • 發佈:2018-11-20
http://www.bubuko.com/infodetail-2278752.html
【安裝Anaconda3】
下載:https://www.continuum.io/downloads,安裝過程中提示failed to create anacoda menue錯誤時參考http://www.cnblogs.com/chuckle/p/7429624.html。
【安裝TensorFlow】(須要網路連結,離線安裝參考:http://www.jianshu.com/p/c245d46d43f0)
開啟Anaconda Prompt,輸入:
pip install tensorflow
【安裝keras】(須要網路連結,參考: http://www.jianshu.com/p/c245d46d43f0)
開啟Anaconda Prompt,輸入:
pip install keras
這裡會安裝Theano,不管它。
【測試keras是否安裝成功】(參考:http://www.jianshu.com/p/c245d46d43f0)
開啟Anaconda Prompt,在命令列中輸入:
python
再輸入:
import tensorflow as tf sess = tf.Session() a = tf.constant(10) b = tf.constant(22) print(sess.run(a + b))
輸出為32,TensorFlow安裝成功。
再輸入:
import keras
無錯即keras安裝成功。
【安裝Pycharm並激活】
略。
修改Python直譯器路徑,選擇Anaconda安裝目錄下的python.exe:
【demo】(須要網路連結,下載資料集)
在Pycharm中新建工程,新建python file,拷貝下列程式碼(原作者:@渉風,http://www.cnblogs.com/surfzjy/p/6419201.html),執行。
from __future__ import print_function # 匯入numpy庫, numpy是一個常用的科學計算庫,優化矩陣的運算 import numpy as np np.random.seed(1337) # 匯入mnist資料庫, mnist是常用的手寫數字庫 from keras.datasets import mnist # 匯入順序模型 from keras.models import Sequential # 匯入全連線層Dense, 啟用層Activation 以及 Dropout層 from keras.layers.core import Dense, Dropout, Activation # 匯入優化器RMSProp from keras.optimizers import RMSprop # 匯入numpy工具,主要是用to_categorical來轉換類別向量 from keras.utils import np_utils # 設定batch的大小 batch_size = 128 # 設定類別的個數 nb_classes = 10 # 設定迭代的次數 nb_epoch = 20 # keras中的mnist資料集已經被劃分成了60,000個訓練集,10,000個測試集的形式,按以下格式呼叫即可 (X_train, y_train), (X_test, y_test) = mnist.load_data() # X_train原本是一個60000*28*28的三維向量,將其轉換為60000*784的二維向量 X_train = X_train.reshape(60000, 784) # X_test原本是一個10000*28*28的三維向量,將其轉換為10000*784的二維向量 X_test = X_test.reshape(10000, 784) # 將X_train, X_test的資料格式轉為float32儲存 X_train = X_train.astype(‘float32‘) X_test = X_test.astype(‘float32‘) # 歸一化 X_train /= 255 X_test /= 255 # 打印出訓練集和測試集的資訊 print(X_train.shape[0], ‘train samples‘) print(X_test.shape[0], ‘test samples‘) ‘‘‘ 將類別向量(從0到nb_classes的整數向量)對映為二值類別矩陣, 相當於將向量用one-hot重新編碼‘‘‘ Y_train = np_utils.to_categorical(y_train, nb_classes) Y_test = np_utils.to_categorical(y_test, nb_classes) # 建立順序型模型 model = Sequential() ‘‘‘ 模型需要知道輸入資料的shape, 因此,Sequential的第一層需要接受一個關於輸入資料shape的引數, 後面的各個層則可以自動推匯出中間資料的shape, 因此不需要為每個層都指定這個引數 ‘‘‘ # 輸入層有784個神經元 # 第一個隱層有512個神經元,啟用函式為ReLu,Dropout比例為0.2 model.add(Dense(512, input_shape=(784,))) model.add(Activation(‘relu‘)) model.add(Dropout(0.2)) # 第二個隱層有512個神經元,啟用函式為ReLu,Dropout比例為0.2 model.add(Dense(512)) model.add(Activation(‘relu‘)) model.add(Dropout(0.2)) # 輸出層有10個神經元,啟用函式為SoftMax,得到分類結果 model.add(Dense(10)) model.add(Activation(‘softmax‘)) # 輸出模型的整體資訊 # 總共引數數量為784*512+512 + 512*512+512 + 512*10+10 = 669706 model.summary() ‘‘‘ 配置模型的學習過程 compile接收三個引數: 1.優化器optimizer:引數可指定為已預定義的優化器名,如rmsprop、adagrad, 或一個Optimizer類物件,如此處的RMSprop() 2.損失函式loss:引數為模型試圖最小化的目標函式,可為預定義的損失函式, 如categorical_crossentropy、mse,也可以為一個損失函式 3.指標列表:對於分類問題,一般將該列表設定為metrics=[‘accuracy‘] ‘‘‘ model.compile(loss=‘categorical_crossentropy‘, optimizer=RMSprop(), metrics=[‘accuracy‘]) ‘‘‘ 訓練模型 batch_size:指定梯度下降時每個batch包含的樣本數 nb_epoch:訓練的輪數,nb指number of verbose:日誌顯示,0為不在標準輸出流輸出日誌資訊,1為輸出進度條記錄,2為epoch輸出一行記錄 validation_data:指定驗證集 fit函式返回一個History的物件,其History.history屬性記錄了損失函式和其他指標的數值隨epoch變化的情況, 如果有驗證集的話,也包含了驗證集的這些指標變化情況 ‘‘‘ history = model.fit(X_train, Y_train, batch_size = batch_size, nb_epoch = nb_epoch, verbose = 1, validation_data = (X_test, Y_test)) # 按batch計算在某些輸入資料上模型的誤差 score = model.evaluate(X_test, Y_test, verbose=0) # 輸出訓練好的模型在測試集上的表現 print(‘Test score:‘, score[0]) print(‘Test accuracy:‘, score[1])