日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Keras学习

發布時間:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Keras学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Keras概述

1、介紹

  • Keras?是一個兼容?Theano?和?Tensorflow?的神經網絡高級包
  • 用他來組件一個神經網絡更加快速, 幾條語句就搞定
  • Keras?可以再在?Windows?和?MacOS?或者?Linux?上運行
  • 網站:https://keras.io/

2、安裝Keras

  • 需要事先安裝好numpy和scipy
  • 直接pip安裝:pip install keras
  • Keras有兩個backend,就是是基于什么進行運算的,一個是Tensorflow,一個是Theano
  • 通過修改配置文件永久修改

    • 默認配置是Tensorflow,這里改為Theano
    • Windows在用戶的文件夾下有個配置文件:C:\Users\bob\.keras文件夾下的keras.json文件
    • 修改即可
      123456 {"image_dim_ordering": "tf", "epsilon": 1e-07, "floatx": "float32", "backend": "theano"}
  • 修改當前腳本的環境變量

    123 import os os.environ['KERAS_BACKEND']='tensorflow' # 或者theanoimport keras

二、搭建神經網絡

1、一個神經網絡例子

  • 導入包

    12345 import kerasimport numpy as npfrom keras.models import Sequential # Sequential順序建立from keras.layers import Dense # 全連接層import matplotlib.pyplot as plt
  • 制造數據

    12345678 '''制造數據,并且顯示'''X = np.linspace(-1,1,200)np.random.shuffle(X)Y = 0.5 * X + 2 + np.random.normal(0,0.05,(200,))plt.scatter(X,Y)plt.show()X_train,Y_train = X[:160],Y[:160]X_test,Y_test = X[160:],Y[160:]
  • 建立模型

    123 '''建立模型'''model = Sequential() # 通過Sequential建立modelmodel.add(Dense(output_dim=1, input_dim=1)) # model.add添加神經層,指定輸入和輸出維度
  • 激活模型

    12 '''激活模型'''model.compile(optimizer='sgd', loss='mse')
  • 訓練模型

    1234 for i in range(500):cost = model.train_on_batch(X_train,Y_train) # 使用批訓練if i % 50 == 0:print(cost)
  • 測試集的cost誤差

    12 cost = model.evaluate(X_test, Y_test, batch_size=40)print(cost)
  • 學到的權重和偏置

    123 '''輸出學到的權重和偏置'''W,b = model.layers[0].get_weights()print(W,b)
  • 預測

    1 Y_pred = model.predict(X_test)

2、手寫數字識別例子–mnist

  • 導入包:

    1234567 import kerasfrom keras.datasets import mnistfrom keras.utils import np_utilsimport numpy as npfrom keras.models import Sequential # Sequential順序建立from keras.layers import Dense,Activation # 全連接層from keras.optimizers import RMSprop
  • 加載并預處理數據

    123456 '''加載和預處理數據'''(X_train,y_train),(X_test,y_test) = mnist.load_data() # 下載數據集,windows在當前用戶的對應目錄下:C:\Users\bob\.keras\datasetsX_train = X_train.reshape(X_train.shape[0],-1)/255 # X_train是(60000, 28, 28),reshape一下變成(60000,784),然后在標準化X_test = X_test.reshape(X_test.shape[0],-1)/255y_train = np_utils.to_categorical(y_train,nb_classes=10) # y_train對應的數字1,2,3....轉換為0/1映射y_test = np_utils.to_categorical(y_test,nb_classes=10)
  • 建立模型

    1234567 '''建立模型'''model = Sequential(layers=[Dense(output_dim=32,input_dim=784), # 第一層,輸入為784維,輸出為32維Activation('relu'), # 激勵函數為reluDense(10), # 第二層,這里不需要指定輸入層維度,全連接會使用上一層的輸出,這里即32Activation('softmax'), # 激勵函數,也是最后的預測函數使用softmax])
  • 激活模型

    123456 '''定義optimizer'''rmsprop = RMSprop()'''激活模型'''model.compile(optimizer=rmsprop, loss='categorical_crossentropy', # 分類中使用交叉熵損失函數metrics=['accuracy']) # 計算準確度
  • 訓練模型

    1 model.fit(X_train,y_train,nb_epoch=2,batch_size=100) # nb_epoch整個訓練集訓練次數
  • 測試集上預測信息

    1234 '''測試集測試訓練出的模型'''loss,accuracy = model.evaluate(X_test,y_test)print('loss:',loss)print('accuracy',accuracy)

3、卷積神經網絡CNN–mnist

  • 導入包

    1234567 import kerasfrom keras.datasets import mnistfrom keras.utils import np_utilsimport numpy as npfrom keras.models import Sequential # Sequential順序建立from keras.layers import Dense,Activation,Convolution2D,MaxPooling2D,Flattenfrom keras.optimizers import RMSprop,Adam
  • 建立模型

    123456789101112131415161718192021222324252627282930313233 model = Sequential()## 第一層卷積model.add(Convolution2D(nb_filter=32, # 32個filter,即從32個特征提取nb_row=5, # patch大小nb_col=5, border_mode='same', dim_ordering='th', # theano使用th,TensorFlow使用tfinput_shape=(1,28,28,) # 輸入的大小,1表示輸入的channel通道,由于是黑白圖所以是1,若是rgb是3個通道))## 第一層激活層model.add(Activation('relu'))## 第一層池化層model.add(MaxPooling2D(pool_size=(2,2), # 2x2的大小strides=(2,2), # 步長為2,縱向和橫向border_mode='same'))### 第二層卷積層model.add(Convolution2D(nb_filter=64, # 不需要指定輸入的大小了nb_row=5,nb_col=5, border_mode='same'))### 第二層激活層model.add(Activation('relu'))### 第二層池化層model.add(MaxPooling2D(border_mode='same'))#### 全連接層model.add(Flatten()) # 展開model.add(Dense(output_dim=1024)) # 輸出維度為1024model.add(Activation('relu'))model.add(Dense(output_dim=10)) # 最終輸出為10類model.add(Activation('softmax'))
  • 激活模型

    1234 adam = Adam()model.compile(optimizer=adam, # 使用adam的optimizerloss='categorical_crossentropy',metrics=['accuracy'])
  • 訓練模型

    1 model.fit(X_train, y_train)
  • 測試集計算結果

    1234 '''測試集模型'''loss,accuracy = model.evaluate(X_test,y_test)print("loss",loss)print('accuracy',accuracy)


原文地址:?http://lawlite.me/2017/02/14/Keras%E5%AD%A6%E4%B9%A0/

總結

以上是生活随笔為你收集整理的Keras学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。