Vinh Lê

Tôi là một Lập trình viên

Vinh Lê

Cái mất mình nghĩ là to, cái được sẽ không nhìn thấy. Ai cũng cần cố gắng.

  • Tầng 6, tòa nhà Technosoft, ngõ 15 Duy Tân, Cầu Giấy, HN.
  • 0972 783 945
  • mr.lenovi@gmail.com
  • vinhleit.blogspot.com
Me

Kỹ năng cá nhân

Hơn 7 năm kinh nghiệm lập trình

Web Design 90%
Web Development 80%
App Development 90%
Mobile Development 60%

Awesome features

Aliquam commodo arcu vel ante volutpat tempus. Praesent pulvinar velit at posuere mollis. Quisque libero sapien.

Animated elements

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed tempus cursus lectus vel pellentesque. Etiam tincidunt.

Responsive Design

Pellentesque ultricies ligula a libero porta, ut venenatis orci molestie. Vivamus vitae aliquet tellus, sed mollis libero.

Modern design

Duis ut ultricies nisi. Nulla risus odio, dictum vitae purus malesuada, cursus convallis justo. Sed a mi massa dolor.

Retina ready

Vivamus quis tempor purus, a eleifend purus. Ut sodales vel tellus vel vulputate. Fusce rhoncus semper magna.

Fast support

Suspendisse convallis sem eu ligula porta gravida. Suspendisse potenti. Lorem ipsum dolor sit amet, duis omis unde elit.

0
completed project
0
design award
0
facebook like
0
current projects
  • Beautiful Relaxing Music Stress Relief | Soothing Music With Nature Soun...

  • ASP.NET Web API 2 - Creating And Validating JWT (JSON Web Token)

    Why do we need a Token in Restful services?

     
    Restful services or Web APIs are stateless by default. Every request is a new request to the server. This makes Web APIs easily scalable. But what if we want to provide some authorization on our Web APIs? We can issue a token to the requester and then the requester can present that token in future requests to authorize itself.
     
    Now we have two options,
    1. Create a random but unique token and keep track of that token on the server side. This is how Server Side Session works. We have "Session Id", a unique & random string.
    2. Create a token which contains everything in it and then you don't track anything on server.
    The first option is not very scalable but the second option is. Now if our token is going to contain the data in itself, what issues do we see?
    1. What will be format of token & how to represent data in it?
    2. How to secure the content of token so the end user can't read it?
    3. How to detect if token is tempered by end user?
    We can develop our own mechanism to 1) Create a token 2) Validate a token and extract information from it when someone presents a token to us. But do we have any solution already available for us? Yes, do.
     
    Following are two popular token types for which we currently have support/libraries in ASP.NET,
    1. oAuth Bearer Token

      1. It stores data in the form of claims (key/value pairs)
      2. Token is encrypted.
      3. End User needs algorithm & key to decrypt it.

    2. Json Web Token 

    Json Web Tokens (check https://jwt.io/ for example)

    • JWT token is a string and has three parts separated by dot (.) a) Header b) Payload c) Signature 
    • Header & Payload are JSON objects
    • Header contains algorithm & type of token which is jwt
    • Payload contains claims (key/value pairs) + expiration date + aud/issuer etc. 
    • Signature is HASH value computed using Base64(Header) +"." + Base64(Payload).  This information is passed to an algorithm with a secret key.
    • Token structure is base64(header) + "." + base64(payload) + "." + hash
    This is a quick workflow using JWT,
    1. Client sends a request to server for token
    2. Server generates a JWT (which contains a hash). Hash is generated using a secret key.
    3. Client receives the token and stores it somewhere locally.
    4. Client sends the token in future requests.
    5. Server gets the token from request header, computes Hash again by using a) Header from token b) payload from token c) secret key which server already has.
    6. If ("newly computed hash" = "hash came in token"), token is valid otherwise it is tempered or not valid. 
    User can decode JWT and see what is in header & in payload. Therefore we should not keep any confidential information in token.
     
    In this article, we'll learn,
    1. How can we create Json Web Token in ASP.NET Web API
    2. How to validate a JWT bearer token if it comes in a request
    3. How to get claims data 

    Creating & Validating JWT in ASP.NET Web API

     
    Lets' create an ASP.NET Web API application in Visual Studio 2015/2017/2019 - File -> New Project -> ASP.NET Web Application -> Web API (without  authentication to keep things simple).
     
    Creating JWT Token
    1. Add following nuget Package (You may choose latest version available for .NET Framework version you are using)

       System.IdentityModel.Tokens.Jwt 5.5.0 

    2. Open Values Controller (or we may create a new API controller) and add following namespaces

      using Microsoft.IdentityModel.Tokens;
      using System.IdentityModel.Tokens.Jwt;
      using System.Security.Claims;
      using System.Text;
    Add following Action in Values Controller. Here we've made it very simple.
     
    Note
    Normally we'll expose this method with POST verb + we'll receive some credentials for authentication. Once user will be authenticated, token will be generated accordingly. 
    1. [HttpGet]    
    2. public Object GetToken()    
    3. {    
    4.     string key = "my_secret_key_12345"//Secret key which will be used later during validation    
    5.     var issuer = "http://mysite.com";  //normally this will be your site URL    
    6.   
    7.     var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));    
    8.     var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);    
    9.   
    10.     //Create a List of Claims, Keep claims name short    
    11.     var permClaims = new List<Claim>();    
    12.     permClaims.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()));    
    13.     permClaims.Add(new Claim("valid""1"));    
    14.     permClaims.Add(new Claim("userid""1"));    
    15.     permClaims.Add(new Claim("name""bilal"));    
    16.   
    17.     //Create Security Token object by giving required parameters    
    18.     var token = new JwtSecurityToken(issuer, //Issure    
    19.                     issuer,  //Audience    
    20.                     permClaims,    
    21.                     expires: DateTime.Now.AddDays(1),    
    22.                     signingCredentials: credentials);    
    23.     var jwt_token = new JwtSecurityTokenHandler().WriteToken(token);    
    24.     return new { data = jwt_token };    
    25. }
    This is not required but to use action name in route; we are making the following highlighted change in App_Start\WebApiConfig.cs file
    1. config.Routes.MapHttpRoute(  
    2.                 name: "DefaultApi",  
    3.                 routeTemplate: "api/{controller}/{action}/{id}",  
    4.                 defaults: new { id = RouteParameter.Optional }  
    5.             );   
    Now let's run the application and test the following in browser/postman (considering http://localhost:1234 is base URL of our application). 
     
    http://localhost:1234/api/values/gettoken
     
    Response in browser should be something like this. "data" contains the token.
    1. {"data":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI3ODZlZmY0OS00OWQ2LTQ4YjQtODM4NC0yYTA5NDYxODJmN2YiLCJ2YWxpZCI6IjEiLCJ1c2VyaWQiOiIxIiwibmFtZSI6ImJpbGFsIiwiZXhwIjoxNTcwNjMwMzMwLCJpc3MiOiJodHRwOi8vbXlzaXRlLmNvbSIsImF1ZCI6Imh0dHA6Ly9teXNpdGUuY29tIn0.06vzYfiSpj1X9s0-CL2nE7NH4LloASMikZCNfHIJ8tY"}  
    You may copy token from here and decode it on http://jwt.io to see what it contains.
     
    Note
    If you get serialize or XML error, You may remove XML formatter and make JSON formatter as default formatter. You should not be doing this in actual application if your API needs to provide XML formatting support.
     
    Go to Global.asax.cs file and add following line at end of Application_start() method
    1. GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);  

    How to Validate JWT Token?

     
    Note
    JWT Creator App & JWT Validator App can be two different applications.
     
    Add the following nuget packages,
    • Microsoft.Owin.Security.Jwt 4.0.1
    • Microsoft.AspNet.WebApi.Owin 5.2.3
    • Microsoft.Owin.Host.SystemWeb 4.0.1 
    Create Owin Statup class -> Right click on Web Project -> Add -> Owin Startup Class. 
     
    a) Add following namespaces 
    1. using Microsoft.Owin.Security.Jwt;  
    2. using Microsoft.Owin.Security;  
    3. using Microsoft.IdentityModel.Tokens;  
    4. using System.Text;  
    b) Replace class with the following.
     
    Note
    We are using same parameters that we used while creating token. This will be used to validate request. If it finds a token is valid, it will set User.Identity accordingly. We'll see later how to check if a user is authenticated (i.e. valid token is recieved) and how to extract claims from identity. 
    1. public class Startup  
    2.     {  
    3.         public void Configuration(IAppBuilder app)  
    4.         {  
    5.             app.UseJwtBearerAuthentication(  
    6.                 new JwtBearerAuthenticationOptions  
    7.                 {  
    8.                     AuthenticationMode = AuthenticationMode.Active,  
    9.                     TokenValidationParameters = new TokenValidationParameters()  
    10.                     {  
    11.                         ValidateIssuer = true,  
    12.                         ValidateAudience = true,  
    13.                         ValidateIssuerSigningKey = true,  
    14.                         ValidIssuer = "http://mysite.com", //some string, normally web url,  
    15.                         ValidAudience = "http://mysite.com",  
    16.                         IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("my_secret_key_12345"))  
    17.                     }  
    18.                 });  
    19.         }  
    20.     }  
    Open App_Start\WebApiConfig.cs file,
     
    a) Add following namespace
    1. using Microsoft.Owin.Security.OAuth;  
    b) Update WebApiConfig.Register method with highlighted code. This is to enable oAuth authentication. Also add {action} in route config.
    1. public static void Register(HttpConfiguration config) {  
    2.  // Web API configuration and services    
    3.  config.SuppressDefaultHostAuthentication();  
    4.  config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));  
    5.   
    6.  // Web API routes    
    7.  config.MapHttpAttributeRoutes();  
    8.   
    9.  config.Routes.MapHttpRoute(  
    10.   name: "DefaultApi",  
    11.   routeTemplate: "api/{controller}/{action}/{id}",  
    12.   defaults: new {  
    13.    id = RouteParameter.Optional  
    14.   }  
    15.  );  
    16. }  
    Open any API Controller (e.g. Values Controller)
     
    a) Add following namespace
    1. using System.Security.Claims;  
    b) Add the following Actions in API Controller (e.g. Values) for testing.
     
    GetName1
     
    It has no authorization enabled on it. This function will be called whether we've received a token or not but we are checking if user is authenticated (means a valid token has been received) inside the function. User.Identity contains the claims (which are constructed from token)
    1. [HttpPost]    
    2. public String GetName1() {    
    3.  if (User.Identity.IsAuthenticated) {    
    4.   var identity = User.Identity as ClaimsIdentity;    
    5.   if (identity != null) {    
    6.    IEnumerable < Claim > claims = identity.Claims;    
    7.   }    
    8.   return "Valid";    
    9.  } else {    
    10.   return "Invalid";    
    11.  }    
    12. }    
    GetName2
     
    It has Authorize attribute. This function will not be called if a valid token is not received.
    1. [Authorize]  
    2. [HttpPost]  
    3. public Object GetName2() {  
    4.  var identity = User.Identity as ClaimsIdentity;  
    5.  if (identity != null) {  
    6.   IEnumerable < Claim > claims = identity.Claims;  
    7.   var name = claims.Where(p => p.Type == "name").FirstOrDefault() ? .Value;  
    8.   return new {  
    9.    data = name  
    10.   };  
    11.   
    12.  }  
    13.  return null;  
    14. } 
    Now let's run the application and test it using Postman (https://getpostman.com) by providing token, by providing invalid token, without token etc.
     
    Method Type: POST
     
    URL: http://localhost:1234/api/values/getname1
     
    Headers
     
    Authorization: Bearer <token> 
    Content-Type: application/json
       
     
    Method Type: POST
    URL: http://localhost:1234/api/values/getname2
     
    Headers
    Authorization: Bearer <token>
    Content-Type: application/json
     
     
     
    Note
    Requester/Consumer of token can be browser/desktop app/mobile app/postman etc. as long it allows creating HTTP requests. 
     
    Want to see how to achieve above with ASP.NET Core? Check here.
     

    Summary

     
    JSON web tokens have got quite popular and there are reasons for this popularity. The main reason is its simplicity. End application/consumer should consider security of tokens as important as login/password security. JWT are not encrypted, but rather encoded. It means anyone who has access to JWT can decode and get information from it. Confidential data should not be part of it or it should be encrypted if it is required. Size of payload should be small. Keep only required claims with small names.

  • Exstension thường dùng cho Visual Studio Code

    Visual Studio Code provides basic support for HTML programming out of the box. There is syntax highlighting, smart completions with IntelliSense, and customizable formatting. VS Code also includes great Emmet support.

    IntelliSense#

    As you type in HTML, we offer suggestions via HTML IntelliSense. In the image below, you can see a suggested HTML element closure </div> as well as a context specific list of suggested elements.

    HTML IntelliSense

    We also offer up suggestions for elements, tags, some values (as defined in HTML5), Ionic and AngularJS tags. Document symbols are also available for HTML, allowing you to quickly navigate to DOM nodes by id and class name.

    You can also work with embedded CSS and JavaScript. However, note that script and style includes from other files are not followed, the language support only looks at the content of the HTML file.

    You can trigger suggestions at any time by pressing Ctrl+Space.

    You can also control which built-in code completion providers are active. Override these in your user or workspace settings if you prefer not to see the corresponding suggestions.

    // Configures if the built-in HTML language suggests Angular V1 tags and properties.
    "html.suggest.angular1": true,
    
    // Configures if the built-in HTML language suggests Ionic tags, properties and values.
    "html.suggest.ionic": true,
    
    // Configures if the built-in HTML language suggests HTML5 tags, properties and values.
    "html.suggest.html5": true

    Close tags#

    Tag elements are automatically closed when > of the opening tag is typed.

    HTML Close1

    The matching closing tag is inserted when / of the closing tag is entered.

    HTML Close2

    You can turn off autoclosing tags with the following setting:

    "html.autoClosingTags": false

    Color picker#

    The VS Code color picker UI is now available in HTML style sections.

    color picker in HTML

    It supports configuration of hue, saturation and opacity for the color that is picked up from the editor. It also provides the ability to trigger between different color modes by clicking on the color string at the top of the picker. The picker appears on a hover when you are over a color definition.

    Hover#

    Move the mouse over HTML tags or embedded styles and JavaScript to get more information on the symbol under the cursor.

    HTML Hover

    Validation#

    The HTML language support performs validation on all embedded JavaScript and CSS.

    You can turn that validation off with the following settings:

    // Configures if the built-in HTML language support validates embedded scripts.
    "html.validate.scripts": true,
    
    // Configures if the built-in HTML language support validates embedded styles.
    "html.validate.styles": true

    Folding#

    You can fold regions of source code using the folding icons on the gutter between line numbers and line start. Folding regions are available for all HTML elements for multiline comments in the source code.

    Additionally you can use the following region markers to define a folding region: <!-- #region --> and <!-- endregion -->

    If you prefer to switch to indentation based folding for HTML use:

    "[html]": {
        "editor.foldingStrategy": "indentation"
    },

    Formatting#

    To improve the formatting of your HTML source code, you can use the Format Document command Shift+Alt+F to format the entire file or Format Selection Ctrl+K Ctrl+F to just format the selected text.

    The HTML formatter is based on js-beautify. The formatting options offered by that library are surfaced in the VS Code settings:

    • html.format.wrapLineLength: Maximum amount of characters per line.
    • html.format.unformatted: List of tags that shouldn't be reformatted.
    • html.format.contentUnformatted: List of tags, comma separated, where the content shouldn't be reformatted.
    • html.format.extraLiners: List of tags that should have an extra newline before them.
    • html.format.preserveNewLines: Whether existing line breaks before elements should be preserved.
    • html.format.maxPreserveNewLines: Maximum number of line breaks to be preserved in one chunk.
    • html.format.endWithNewline: End with a newline.
    • html.format.indentInnerHtml: Indent <head> and <body> sections.
    • html.format.wrapAttributes: Wrapping strategy for attributes:
      • auto: Wrap when the line length is exceeded
      • force: Wrap all attributes, except first
      • force-aligned: Wrap all attributes, except first, and align attributes
      • force-expand-multiline: Wrap all attributes
      • aligned-multiple: Wrap when line length is exceeded, align attributes vertically
      • preserve: Preserve wrapping of attributes
      • preserve-aligned: Preserve wrapping of attributes but align

    Tip: The formatter doesn't format the tags listed in the html.format.unformatted and html.format.contentUnformatted settings. Embedded JavaScript is formatted unless 'script' tags are excluded.

    The Marketplace has several alternative formatters to choose from. If you want to use a different formatter, define "html.format.enable": false in your settings to turn off the built-in formatter.

    Emmet snippets#

    VS Code supports Emmet snippet expansion. Emmet abbreviations are listed along with other suggestions and snippets in the editor auto-completion list.

    Emmet HTML support built-in

    Tip: See the HTML section of the Emmet cheat sheet for valid abbreviations.

    If you'd like to use HTML Emmet abbreviations with other languages, you can associate one of the Emmet modes (such as css, html) with other languages with the emmet.includeLanguages setting. The setting takes a language id and associates it with the language id of an Emmet supported mode.

    For example, to use Emmet HTML abbreviations inside JavaScript:

    {
      "emmet.includeLanguages": {
        "javascript": "html"
      }
    }

    We also support User Defined Snippets.

    HTML custom data#

    You can extend VS Code's HTML support through a declarative custom data format. By setting html.customData to a list of JSON files following the custom data format, you can enhance VS Code's understanding of new HTML tags, attributes and attribute values. VS Code will then offer language support such as completion & hover information for the provided tags, attributes and attribute values.

    You can read more about using custom data in the vscode-custom-data repository.

    HTML extensions#

    Install an extension to add more functionality. Go to the Extensions view (Ctrl+Shift+X) and type 'html' to see a list of relevant extensions to help with creating and editing HTML.

    Tip: Click on an extension tile above to read the description and reviews to decide which extension is best for you. See more in the Marketplace.

    Next steps#

    Read on to find out about:

    Common questions#

    Does VS Code have HTML preview?#

    No, VS Code doesn't have built-in support for HTML preview but there are extensions available in the VS Code Marketplace. Open the Extensions view (Ctrl+Shift+X) and search on 'live preview' or 'html preview' to see a list of available HTML preview extensions.

  • Hướng dẫn sử dụng git – Các lệnh cơ bản của GIT

    Giới thiệu

    Khi nói đến version control system, có rất ít ứng dụng có thể vượt qua được GIT về hiệu năng. GIT được phát triển bởi Linus Torvalds trong năm 2005 và giớ đây, hàng triệu công ty đang sử dụng nó để làm trình quản lý phiên bản mã nguồn của các dự án của họ. Phần mềm mã nguồn mở có thể tải về cho Linux, Windows, Solaris và Mac, thông tin chi tiết về GIT có thể tìm thấy tại đây: basics can be retrieved here. Trong bài hướng dẫn này, các command cơ bản của Git sẽ được cung cấp.



    Bạn cần chuẩn bị gì?

    Trước khi bắt đầu, bạn cần chuẩn bị:

    • GIT được cài trên hệ thống của bạn

    Hướng dẫn sử dụng git – Các lệnh cơ bản của GIT

    • git config

    Một trong các lệnh được dùng nhiều nhất là git config, có thể được cấu hình cho cá nhân với các giá trị của emails, thuật toán cho diff, username và file format,… Ví dụ, command bên dưới có thể dùng cho email:

     git config --global user.email sam@google.com
    • git init

    Lệnh này được dùng để tạo GIT repository. Cách dùng:

    git init
    • git add

    Lệnh git add có thể được dùng để thêm file vào index. Ví dụ, command sau có thể thêm một file có tên temp.txt vào thư mục local vào index:

    git add temp.txt
    • git clone

    Lệnh git clone được dùng với mục đích check out. Nếu respository phụ thuộc vào server từ xa, sử dụng:\

    git clone alex@93.188.160.58:/path/to/repository
    • Ngược lại, nếu một bản repository đang hoạt động tại local đã được tạo, hãy dùng:
    git clone /path/to/repository
    • git commit

    Lệnh git commit được dùng để commit thay đổi từ đầu. Hãy lưu ý là thay đổi không được áp dụng cho repository của server từ xa :

    git commit –m “Message to go with the commit here”
    • git status
    Lệnh git status hiển thị dnah sách thay đổi của files được thêm hoặc commited. Cách dùng:

    git status

    git push

    git push là một lệnh  được sử dụng nhiều của git. Một lệnh push đơn giản sẽ gửi thay đổi tới master branch của repositorys của server từ xa được chỉ định  với một thư mục. Ví dụ:

    git push origin master
    • git checkout

    Lệnh git checkout có thể được dùng để tạo branched hoặc chuyển giữa chúng. Ví dụ, lệnh sau tạo một brach mới và chuyển tới nó;

    command git checkout -b <branch-name>
    • Để chuyển từ branch này sang branch khác, hãy dùng:
    git checkout <branch-name>
    • git remote

    Lệnh git remote giúp user kết nối tới repository từ xa. Lệnh sau liệt kê danh sách repositories từ xa mà đang được cấu hình::

    git remote –v
    • Lện này cũng giúp người dùng kết nối từ repository ở local tới remote server::
    git remote add origin <93.188.160.58>
    • git branch
    Lệnh git branch có thể được dùng để liệt kê, tạo hoặc xóa branches. Để liệt kê tất cả các branchs đang có trong repositories, hãy dùng:
    
    git branch

    Để xóa branch:

    git branch –d <branch-name>
    • git pull

    Để merge tất cả các thay đổi trên remote repository tới thư mục đang chạy trên local, pull command cần được dùng. Cách dùng:

    git pull
    • git merge

    Lệnh git merge được dùng để merge một branch vào một branch đang hoạt động. Cách dùng:

    git merge <branch-name>
    • git diff

    Lệnh git diff được dùng để liệt kê xung đột. Để hiển thị xung đột với base file, sử dụng:

    git diff --base <file-name>
    • Command bên dưới được dùng để hiển thị mâu thuẫn giửa branches sắp được merge:
    git diff <source-branch> <target-branch>
    • Để hiển thị các mâu thuẫn hiện tại, sử dụng:
    git diff
    • git tag
    1. Tagging được dùng để đánh dấu commit với một handle đơn giản. Ví dụ có thể là:
    2. git tag 1.1.0 <insert-commitID-here>
    • git log

    Chạy git log cho ra danh sách commits trên branch  với thông tin cần thiết. Một output đơn giản có thể là:

    commit 15f4b6c44b3c8344caasdac9e4be13246e21sadw
     Author: Alex Hunter <alexh@gmail.com>
     Date:   Mon Oct 1 12:56:29 2016 -0600
    • git reset

    Để reset index và thư mục đang chạy với lần commit cuối cùng, git reset command được dùng. Cách dùng:

    git reset --hard HEAD
    • git rm

    git rm có thể được dùng để loại bỏ files từ torng index và thư mục đang hoạt động. Cách dùng:

    git rm filename.txt
    • git stash

    Là một trong số ít lệnh cơ bản ít được biết đến, git stash giúp bạn lưu lại thay đổi mà chưa được commited ngay lập tức, nhưng tạm thời. Sử dụng:

    git stash

    git show

    Để hiển thi5 thông tin về bất kỳ git object nào, hãy dùng git show. Ví dụ:

    git show
    • git fetch

    git fetch cho phép user tải tất cả object từ remote repository mà không có trên thư mục local. Ví dụ sử dụng:

    git fetch origin
    • git ls-tree

    Để hiện tree object với tên và mode của mỗi item, và giá trị blob’s SHA-1, sử dụng command, hãy dùng command git ls-tree. Ví dụ:

    git ls-tree HEAD
    • git cat-file

    Sử dụng giá trị SHA-1, hiển thị loại của object bằng cách dùng command git cat-file. Ví dụ:

    git cat-file –p d670460b4b4aece5915caf5c68d12f560a9fe3e4
    • git grep

    git grep giúp người dùng tìm kiếm qua nội dung dạng cây cho cụm từ và từ. Ví dụ, để tìm từ www.hostinger.com trong tất cả các file:

    git grep "www.hostinger.vn"
    • gitk

    gitk là một giao diện đồ họa cho local repository có thể được kích hoạt bằng cách gõ và chạy:

    gitk

    • git instaweb

    Với lệnh git instaweb, một web server có thể chạy  command, một web server có thể chạy trên local repository. Một trình duyệt web có thể tự động được chỉ định tới nó. Ví dụ:

    git instaweb –httpd=webrick
    • git gc

    Để tối ưu repository với garbage collection, sẽ dọn dẹp các file không cần thiết và tối ưu chúng, sử dụng:

    git gc
    • git archive

    Lệnh git archive giúp người dùng tạo file zip hoặc file tar chứa các thành phần của một cây repository. Ví dụ:

    git archive --format=tar master
    • git prune

    Qua lệnh git prune, objects không có bất kỳ pointers nào sẽ được xóa. Cách dùng:

    git prune
    • git fsck

      Để thực hiện integrity check của git file system, sử dụng command git fsck. Bất kỳ object lỗi nào cũng được xác định:

    git fsck
    • git rebase

    Lệnh git rebase được dùng để áp dụng lại commits của một branch khác.  Ví dụ:

    git rebase master

    Kết luận

    Hướng dẫn sử dụng git trên bao gồm một vài lệnh thường gặp cơ bản của git. Hãy tham khảo thêm hướng dẫn GIT GIT tutorial để các cài đặt GIT theo từng bước.

    Theo hostinger.vn

  • TensorFlow là gì? Tìm hiểu về TensoFlow từ A đến Z

    Tensorflow là gì – Với sự bùng nổ của lĩnh vực Trí Tuệ Nhân Tạo – A.I. trong thập kỷ vừa qua, machine learning và deep learning rõ ràng cũng phát triển theo cùng. Và ở thời điểm hiện tại, TensorFlow chính là thư viện mã nguồn mở cho machine learning nổi tiếng nhất thế giới, được phát triển bởi các nhà nghiên cứu từ Google. Việc hỗ trợ mạnh mẽ các phép toán học để tính toán trong machine learning và deep learning đã giúp việc tiếp cận các bài toán trở nên đơn giản, nhanh chóng và tiện lợi hơn nhiều. 

    Xem thêm: Hiểu thêm về Deep Learning thông qua 12 khóa học online miễn phí

    Các hàm được dựng sẵn trong thư viện cho từng bài toán cho phép TensorFlow xây dựng được nhiều neural network. Nó còn cho phép bạn tính toán song song trên nhiều máy tính khác nhau, thậm chí trên nhiều CPU, GPU trong cùng 1 máy hay tạo ra các dataflow graph – đồ thị luồng dữ liệu để dựng nên các model. Nếu bạn muốn chọn con đường sự nghiệp trong lĩnh vực A.I. này, nắm rõ những điều cơ bản của TensorFlow thực sự rất quan trọng.

    Được viết bằng C++ và thao tác interface bằng Python nên phần performance của TensorFlow cực kỳ tốt. Đối tượng sử dụng nó cũng đa dạng không kém: từ các nhà nghiên cứu, nhà khoa học dữ liệu và dĩ nhiên không thể thiếu các lập trình viên. 

    Lịch sử ra đời TensorFlow

    Vài năm trước, khi phải xử lý lượng dữ liệu khổng lồ, deep learning bắt đầu cho thấy hiệu năng vượt trội so với tất cả các thuật toán machine learning khác. Google sớm nhận ra tiềm năng này và nghĩ rằng họ nên sử dụng deep neural network để cải thiện các dịch vụ của mình, trong đó có:

    – Gmail.
    – Hình ảnh
    – Google search engine

    Thế là họ dựng 1 framework có tên là TensorFlow để các nhà nghiên cứu cũng như lập trình viên có thể làm việc cùng nhau trên model A.I. 1 khi đã được phát triển và scale hoàn chỉnh, rất nhiều người đã có thể sử dụng được nó.

    Xem thêm: Thử làm ứng dụng tô màu bằng AI 

    Ra mắt lần đầu vào cuối năm 2015, phiên bản TensorFlow ổn định cuối cùng cũng xuất hiện vào năm 2017. Là mã nguồn mở dưới sự cho phép của Apache Open Source, giờ đây bạn có thể sử dụng, điều chỉnh và tái đóng góp phiên bản được điều chỉnh đó, đổi lại không cần phải trả bất cứ đồng nào cho Google. 

    TensorFlow là gì?
    TensorFlow trong vũ trụ Machine Learning

    Kiến trúc của TensorFlow

    Kiến trúc TensorFlow hoạt động được chia thành 3 phần:

    – Tiền xử lý dữ liệu
    – Dựng model
    – Train và ước tính model

    Cách TensorFlow hoạt động

    TensorFlow cho phép các lập trình viên tạo ra dataflow graph, cấu trúc mô tả làm thế nào dữ liệu có thể di chuyển qua 1 biểu đồ, hay 1 sê-ri các node đang xử lý. Mỗi node trong đồ thị đại diện 1 operation toán học, và mỗi kết nối hay edge giữa các node là 1 mảng dữ liệu đa chiều, hay còn được gọi là ‘tensor’. 

    TensorFlow cung cấp tất cả những điều này cho lập trình viên theo phương thức của ngôn ngữ Python. Vì Python khá dễ học và làm việc, ngoài ra còn cung cấp nhiều cách tiện lợi để ta hiểu được làm thế nào các high-level abstractions có thể kết hợp cùng nhau. Node và tensor trong TensorFlow là các đối tượng Python, và các ứng dụng TensorFlow bản thân chúng cũng là các ứng dụng Python.

    Các operation toán học thực sự thì không được thi hành bằng Python. Các thư viện biến đổi có sẵn thông qua TensorFlow được viết bằng các binary C++ hiệu suất cao. Python chỉ điều hướng lưu lượng giữa các phần và cung cấp các high-level abstraction lập trình để nối chúng lại với nhau.

    TensorFlow 2.0, được ra mắt vào tháng 10 năm 2019, cải tiến framework theo nhiều cách dựa trên phản hồi của người dùng, để dễ dàng và hiệu quả hơn khi làm việc cùng nó (ví dụ: bằng cách sử dụng các Keras API liên quan đơn giản cho việc train model). Train phân tán dễ chạy hơn nhờ vào API mới và sự hỗ trợ cho TensorFlow Lite cho phép triển khai các mô hình trên khá nhiều nền tảng khác nhau. Tuy nhiên, nếu đã viết code trên các phiên bản trước đó của TensorFlow thì bạn phải viết lại, đôi lúc 1 ít, đôi lúc cũng khá đáng kể, để tận dụng tối đa các tính năng mới của TensorFlow 2.0. 

    Lợi ích từ TensorFlow

    Lợi ích dễ thấy nhưng quan trọng nhất mà TensorFlow cung cấp cho việc lập trình machine learning chính là abstraction. Thay vì phải đối phó với những tình huống rườm rà từ việc thực hiện triển khai các thuật toán, hay tìm ra cách hợp lý để chuyển output của 1 chức năng sang input của 1 chức năng khác, giờ đây bạn có thể tập trung vào phần logic tổng thể của 1 ứng dụng hơn. TensorFlow sẽ chăm sóc phần còn lại thay cho bạn.

    Ngoài ra TensorFlow còn ung cấp các tiện ích bổ sung cho các lập trình viên cần debug cũng như giúp bạn tự suy xét các ứng dụng TensorFlow. Chế độ eager execution cho phép bạn đánh giá và sửa đổi từng operation của biểu đồ 1 cách riêng biệt và minh bạch, thay vì phải dựng toàn bộ biểu đồ dưới dạng 1 đối tượng độc lập vốn khá mơ hồ hay phải đánh giá chung tổng thể. Cuối cùng, 1 tính năng khá độc đáo của TensorFlow là TensorBoard. TensorBoard cho phép bạn quan sát 1 cách trực quan những gì TensorFlow đang làm.

    TensorFlow còn có nhiều cải tiến từ sự hậu thuẫn từ các ekíp thương mại hạng A tại Google. Google không những tiếp lửa cho tiến độ nhanh chóng cho sự phát triển đằng sau dự án, mà còn tạo ra nhiều phục vụ độc đáo xung quanh TensorFlow để nó dễ dàng deploy và sử dụng: như silicon TPU mình đã nói ở trên để tăng tốc hiệu suất đám mây Google, 1 online hub cho việc chia sẻ các model được tạo với framework, sự hiện diện của in-browsergần gũi với mobile của framework, và nhiều hơn thế nữa…

    Lưu ý: Trong 1 số công việc training, vài chi tiết về việc triển khai của TensorFlow làm cho nó khó có thể quyết định được hoàn toàn kết quả training model . Đôi khi 1 model được train trên 1 hệ thống này sẽ có thay đổi 1 chút so với 1 model được train trên hệ thống khác, ngay cả khi chúng được cung cấp dữ liệu như nhau. Các nguyên nhân cho điều này cũng xê xích hay 1 số hành vi khi không được xác định khi sử dụng GPU. Điều này nói rằng, các vấn đề đó có thể giải quyết được, và đôi ngũ của TensorFlow cũng đang xem xét việc kiểm soát nhiều hơn để ảnh hưởng đến tính quyết định trong quy trình làm việc.

    Giới thiệu các Component của TensorFlow

    Tensor

    Tên của TensorFlow được đưa ra trực tiếp là nhờ vào framework cốt lõi của nó: Tensor. Trong TensorFlow, tất cả các tính toán đều liên quan tới các tensor. 1 tensor là 1 vector hay ma trận của n-chiều không gian đại diện cho tất cả loại dữ liệu. Tất cả giá trị trong 1 tensor chứa đựng loại dữ liệu giống hệt nhau với 1 shape đã biết (hoặc đã biết 1 phần). Shape của dữ liệu chính là chiều của ma trận hay mảng.

    1 tensor có thể được bắt nguồn từ dữ liệu input hay kết quả của 1 tính toán. Trong TensorFlow, tất cả các hoạt động được tiến hành bên trong 1 graph – biểu đồ. Biểu đồ là 1 tập hợp tính toán được diễn ra liên tiếp. Mỗi operation được gọi là 1 op node  (operation node) và được kết nối với nhau.

    Biểu đồ phát thảo các op và kết nối giữa các node. Tuy nhiên, nó không hiển thị các giá trị. Phần edge của các node chính là tensor, 1 cách để nhập operation với dữ liệu.


    Graph

    TensorFlow sử dụng framework dạng biểu đồ. Biểu đồ tập hợp và mô tả tất cả các chuỗi tính toán được thực hiện trong quá trình training. Biểu đồ cũng mang rất nhiều lợi thế:

    – Nó được làm ra để chạy trên nhiều CPU hay GPU, ngay cả các hệ điều hành trên thiết bị điện thoại.
    – Tính di động của biểu đồ cho phép bảo toàn các tính toán để bạn sử dụng ngay hay sau đó. Biểu đồ có thể được lưu lại để thực thi trong tương lai.
    – Tất cả tính toán trong biểu đồ được thực hiện bằng cách kết nối các tensor lại với nhau. 1 tensor có 1 node và 1 edge. Node mang operation toán học và sản xuất các output ở đầu cuối. Các edge giải thích mối quan hệ input/output giữa các node.

    Xem thêm: Nâng cao kiến thức lập trình bằng 500 khóa học computer sience

    Danh sách các thuật toán nổi bật được hỗ trợ bởi TensorFlow

    Tính tới thời điểm phiên bản ra mắt TensorFlow 1.10, nó đã sở hữu built-in API cho:

    Linear regression: tf.estimator.LinearRegressor
    Classification: tf.estimator.LinearClassifier
    Deep learning classification: tf.estimator.DNNClassifier
    Deep learning wipe and deep: tf.estimator.DNNLinearCombinedClassifier
    Booster tree regression: tf.estimator.BoostedTreesRegressor
    Boosted tree classification: tf.estimator.BoostedTreesClassifier

    Ví dụ TensorFlow đơn giản

    import numpy as np
    import tensorflow as tf

    Trong 2 line code đầu, ta đã import tensorflow là tf. Với Python, nó chỉ là 1 bài tập thông dụng khi dùng tên viết tắt cho 1 thư viện. Lợi thế là để tránh gõ đầy đủ tên của thư viện khi ta cần sử dụng nó. Ví dụ: chúng ta có thể import tensorflow là tf, và gọi tf khi chúng ta muốn dùng 1 chức năng TensorFlow.

    Ta hãy luyện tập quy trình làm việc cơ bản của TensorFlow với 1 ví dụ cơ bản sau đây:Tạo 1 đồ thị tính toán nhân 2 số lại với nhau.

    Chúng ta sẽ nhân X_1 và X_2 lại với nhau. TensorFlow sẽ tạo 1 node để kết nối với operation. Trong ví dụ này, nó được gọi là multiply. Khi đồ thị được xác định, engine tính toán TensorFlow sẽ nhân X_1 và X_2 lại cùng nhau.

    tensorflow là gì?
    Cuối cùng, chúng ta chạy 1 session TensorFlow mà sẽ chạy đồ thị tính toán với giá trị của X_1 và X_2 và print phần kết quả của phép nhân.


    Hãy xác định các input node của X_1 và X_2. Khi ta tạo 1 node trong TensorFlow, chúng ta phải chọn nó là loại node gì. Các node X1 và X2 sẽ là node placeholder – node giữ chỗ. Placeholder chỉ định 1 giá trị mới mỗi khi ta làm 1 phép tính. Ta sẽ tạo chúng như là 1 node TF chấm placeholder.

    Bước 1: Xác định giá trị

    X_1 = tf.placeholder(tf.float32, name = "X_1")
    X_2 = tf.placeholder(tf.float32, name = "X_2")

    Bước 2: Xác định phần tính toán

    multiply = tf.multiply(X_1, X_2, name = "multiply")

    Giờ ta có thể xác định node sẽ thực hiện operation phép nhân. Trong TensorFlow, chúng ta có thể làm điều đó bằng cách tạo 1 node tf.multiply.

    Ta sẽ nhập node X_1 và X_2 tới node nhân. Nó sẽ nói với TensorFlow để liên kết những node đó trong đồ thị tính toán, nên ta đang yêu cầu nó để pull các giá trị từ x và y và nhân phần kết quả. Hãy cho node nhân cái tên multiply. Nó là toàn bộ định nghĩa cho đồ thị tính toán đơn giản này.

    Bước 3: Thực thi operation

    Để thực thi các operation trong đồ thị, ta phải tạo 1 session. Trong TensorFlow, nó được thực hiện bằng tf.Session(). Giờ ta có 1 session ta có thể hỏi session để chạy operation trên đồ thị tính toán của ta bằng cách gọi session. Để chạy phần tính toán, chúng ta sẽ dùng run.

    Khi operation bổ sung chạy, nó sẽ thấy rằng nó cần để lấy các giá trị của node X_1 và X_2, nên chúng ta cũng cần cung cấp các trị cho X_1 và X_2. Ta có thể dùng điều đó bằng cách cung cấp 1 tham số được gọi là feed_dict. Chúng ta chuyển giá trị 1,2,3 cho X_1 và 4,5,6 cho X_2.

    Chúng ta print phần kết quả với print(result). Chúng ta sẽ thấy 4,10 và 18 cho 1×4, 2×5 và 3,6.

    X_1 = tf.placeholder(tf.float32, name = "X_1")
    X_2 = tf.placeholder(tf.float32, name = "X_2")
    
    multiply = tf.multiply(X_1, X_2, name = "multiply")
    
    with tf.Session() as session:
        result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})
        print(result)
    [ 4. 10. 18.]

    Các option tải dữ liệu vào TensorFlow

    Bước đầu tiên trước khi train 1 thuật toán machine learning là load dữ liệu. Có 2 cách thông dụng để load dữ liệu:

    1. Load dữ liệu vào bộ nhớ: đây là phương pháp đơn giản nhất. Bạn load tất cả dữ liệu vào bộ nhớ như 1 mảng đơn. Bạn cũng có thể viết code bằng Python. Những dòng code này không liên quan gì tới TensorFlow.

    2. Pipeline dữ liệu TensorFlow. TensorFlow sở hữu built-in API và nó sẽ giúp bạn load dữ liệu, thực thi các operation và feed thuật toán machine learning 1 cách dễ dàng. Phương pháp này hoạt động tốt đặc biệt khi bạn có 1 dataset lớn. Ví dụ: các hình ảnh thu được được biết khá là khổng lồ và không thể fit vào bộ nhớ. Pipeline dữ liệu sẽ tự quản lý phần bộ nhớ.

    Giải pháp sẽ là gì?

    Load dữ liệu vào bộ nhớ

    Nếu dataset của bạn không quá lớn, chẳng hạn như dưới 10 GB, bạn có thể dùng phương pháp đầu tiên. Dữ liệu có thể dễ dàng fit vào bộ nhớ. Bạn cũng có thể dùng 1 thư viện nổi tiếng có tên là Pandas để import các tệp CSV. 1

    Load dữ liệu với TensorFlow pipeline

    Phương pháp thứ 2 sẽ hoạt động tốt nhất nếu bạn có 1 dataset lớn. Ví dụ: nếu bạn có 1 dataset nặng 50 GB và máy tính của bạn chỉ có 16GB dung lượng thì rõ ràng là máy sẽ crash thôi.

      Bookmark 5 website học lập trình Python tốt nhất

      Bài toán dự báo thời tiết với Machine Learning

    Trong tình huống này, bạn cần dựng 1 TensorFlow pipeline. Đường ống sẽ load dữ liệu trong batch, hay chunk nhỏ. Mỗi batch sẽ được push tới pipeline và sẵn sàng cho việc training. Dựng 1 pipeline là 1 giải pháp tuyệt vời vì nó còn cho bạn sử dụng phép tính toán song song. Nghĩa là TensorFlow sẽ train model qua nhiều CPU. Thúc đẩy sự tính toán và cho phép training mạng lưới thần kinh mạnh mẽ hơn.

    Tóm tắt:
    -Nếu bạn có 1 set dữ liệu nhỏ, bạn có thể load dữ liệu trong bộ nhớ với thư viện Pandas.
    -Nếu bạn có 1 set dữ liệu lớn và muốn sử dụng nhiều CPU, thì bạn sẽ thoải mái hơn khi làm việc cùng TensorFlow pipeline.

    Tạo đường ống TensorFlow

    Trong ví dụ trước, ta đã thêm thủ công 3 giá trị cho X_1 và X_2. Giờ chúng ta sẽ xem cách load dữ liệu tới TensorFlow.

    Bước 1: Tạo dữ liệu

    Đầu tiên, hãy dùng thư viện numpy để tạo ra 2 giá trị ngẫu nhiên.

    import numpy as np
    x_input = np.random.sample((1,2))
    print(x_input)

    Bước 2: Tạo placeholder

    Giống như ví dụ trước, ta tạo 1 placeholder với tên là X. Ta cần phải chỉ định shape của TensorFlow 1 cách rõ ràng. Trong vài trường hợp, ta sẽ tải 1 mảng với chỉ 2 giá trị. Ta có thể viết shape như là shape=[1,2]

    # using a placeholder
    x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')

    Bước 3: Xác định phương pháp cho set dữ liệu

    Tiếp theo, chúng ta cần phải xác định set dữ liệu nơi ta có thể nhập giá trị của placeholder x. Chúng ta cần dùng phương pháp tf.data.Dataset.from_tensor_slices 

    dataset = tf.data.Dataset.from_tensor_slices(x)

    Bước 4: Tạo đường ống

    Trong bước này, ta cần phải khởi tạo pipeline nơi dữ liệu chạy qua. Ta cần tạo 1 iterator với make_initializable_iterator. Đặt tên cho nó là iterator. Rồi ta cần gọi iterator này để feed cho batch dữ liệu tiếp theo, get_next. Ta đặt tên bước này là get_next. Hãy lưu ý điều này trong ví dụ của mình, vì chỉ có duy nhất 1 batch dữ liệu với 2 giá trị.

    iterator = dataset.make_initializable_iterator() 
    get_next = iterator.get_next()

    Bước 5: Thực thi operation

    Bước cuối cũng tương tự như ví dụ trước. Ta khởi tạo 1 session và chạy operation iterator. Ta feed cái feed_dict với giá trị được tạo ra bởi numpy. 2 giá trị này sẽ nhập vào placeholder x. Rồi chúng ta chạy get_next để print kết quả.

    with tf.Session() as sess:
        # feed the placeholder with data
        sess.run(iterator.initializer, feed_dict={ x: x_input }) 
        print(sess.run(get_next)) # output [ 0.52374458  0.71968478]
    [0.8835775  0.23766978]

    10 tài liệu lập trình đáng xem qua nhất về Tensorflow

    1 – Learn TensorFlow 2.0: Implement Machine Learning and Deep Learning Models with Python

    Tài liệu Tensorflow là gì Implement Machine Learning and Deep Learning Models with Python

    Learn TensorFlow 2.0 là quyển sách được viết bởi 2 tác giả Pramod Singh và Avish Manure. Sách bắt đầu bằng việc giới thiệu framework TensorFlow 2.0 và những thay đổi chính từ bản phát hành trước đó. Quyển này cũng tập trụng vào phần dựng các model ‘Supervised Machine Learning’ bằng cách dùng TensorFlow.

    Learn TensorFlow còn dạy cho bạn cách dựng các model bằng việc dùng ‘customer estimators’. Bạn sẽ học được cách sử dụng TensorFlow để dựng các model machine learning và deep learning. Tất cả code trong sách đều có sẵn ở dạng script thực thi trên GitHub, bạn có thể thực hành nó 1 cách dễ dàng.

    2 – Advanced Deep Learning with TensorFlow 2 and Keras

    Tài liệu Tensorflow là gì Advanced Deep Learning with TensorFlow 2 and Keras

    Advanced Deep Learning with TensorFlow 2 and Keras là 1 quyển sách của tác giả Rowel Atienza, nó dạy cho bạn những kỹ thuật deep learning cao cấp đang sẵn có ở thời điểm hiện tại.

    Nó còn dạy cho bạn về deep learning, unsupervised learning bằng cách dùng các thông tin tương quan, xác định đối tượng (SSD). Sách sẽ chỉ cho bạn cách để tạo A.I. hiệu quả với các kỹ thuật tiên tiến nhất hiện tại. Trong Advanced Deep Learning with TensorFlow 2 and Keras, bạn còn được học về GANs và làm thế nào họ có thể mở khoá các cấp độ mới của hiệu năng cho Trí tuệ Nhân Tạo.

    3 – Tensorflow in 1 Day

    Tài liệu Tensorflow là gì in 1 Day

    Học TensorFlow chỉ trong 1 ngày? Nghe thì ảo thật đấy nhưng trong quyển sách bởi tác giả Krishna Rungta này sẽ dạy cho bạn về môn khó nhằn bằng tiếng Anh theo cách dễ hiểu nhất. Nó còn đi kèm đồ thị, tính năng tính toán tuyệt vời. Quyển sách được khá nhiều nhà khoa học dữ liệu khuyến cáo vì độ trực quan mà nó đem lại cho mạng lưới thần kinh khi sử dụng TensorBoard.

    Sách bao gồm các chủ đề như Deep learning là gì?, Machine Learning vs. Deep Learning, TensorFlow là gì? cũng như các chủ đề cao cấp hơn như Jupyter Notebook, TensorFlow trên AWS và còn nhiều nữa… Hẳn đây là 1 quyển không thể thiếu cho các bạn mới bắt đầu tìm hiểu về TensorFlow.

    4 – TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers

    Tài liệu Tensorflow là gì

    TinyML: Machine Learning with TensorFlow Lite là quyển được viết bởi Pete Warden và Daniel Situnayke. Với cuốn tham khảo thực hành này, bạn sẽ bước vào lĩnh vực TinyML. Nó bao gồm deep learning kết hợp cùng hệ thống nhúng để tạo ra những thứ đáng kinh ngạc nhất có thể với những thiết bị tí hon.

    Quyển TinyML này khá lý tưởng cho các bạn lập trình viên phần mềm lẫn lập trình viên phần cứng, nhất là những ai muốn dựng hệ thống nhúng bằng machine learning.

     

    5 – Natural Language Processing with TensorFlow: Teach language to machines using Python’s deep learning library

    Tài liệu Tensorflow là gì Natural Language Processing with TensorFlow- Teach language to machines using Python's deep learning library

    Natural Language Processing with TensorFlow là quyển sách viết bởi Husan Ganefedara. Bạn sẽ học cách ứng dụng các model RNN hiệu năng cao, các cell short-term memory (LSTM), vào các tác vụ Natural Language Processing. Bạn còn có thể khám phá sự chuyển ngữ neural machine và triển khai thực hiện trình chuyển ngữ neural machine.

    Sau khi đọc xong quyển sách này, bạn sẽ hiểu rõ hơn về công nghệ NLP và có thể ứng dụng TensorFlow vào các ứng dụng deep learning NLP, cũng như cách thi hành các tác vụ NLP cụ thể.

    6 – TensorFlow Machine Learning Projects: Build 13 real-world projects with advanced numerical computations using the Python ecosystem

    Tài liệu Tensorflow là gì TensorFlow Machine Learning Projects- Build 13 real-world projects with advanced numerical computations using the Python ecosystem

    TensorFlow Machine Learning Projects là quyển sách bởi bộ 3 tác giả: Ankit Jain, Armando Fandango, và Amita Kapoor. Nó sẽ dạy bạn cách dựng các dự án nâng cao cũng như bạn sẽ có thể va chạm nhiều thử thách thông dụng bằng cách sử dụng các thư viện từ TensorFlow ecosystem.

    Ngoài ra, TMLP còn dạy cho bạn cách dựng các dự án đa dạng bằng real-world domains, autoencoders, các hệ thống được đề xuất, reinforcement learning, v.. v.. Khi kết thúc quyển tham khảo này, bạn sẽ có được chuyên môn cần thiết để dựng các dự án machine learning.

    7 – Hands-On Computer Vision with TensorFlow 2: Leverage deep learning to create powerful image processing apps with TensorFlow 2.0 and Keras

    Tài liệu Tensorflow là gì - Hands-On Computer Vision with TensorFlow 2- Leverage deep learning to create powerful image processing apps with TensorFlow 2.0 and Keras

    Hands-On Computer Vision with TensorFlow 2 được viết bởi tác giả Benjamin Planche và Eliot Andres. Quyển này sẽ giúp bạn phám phá về framework nguồn mở cho machine learning này của Google. Bạn sẽ hiểu được cách làm thế nào để hưởng lợi từ việc sử dụng mạng lưới thần kinh tích chập – convolutional neural networks (CNNs) cho các nhiệm vụ trực quan.

    Sách bắt đầu với nền tảng của tầm nhìn máy tính và deep learning. Sách cũng dạy cho bạn làm thế nào để dựng 1 mạng lưới thần kinh từ con số 0 cũng như giúp bạn cách phân loại hình ảnh với các giải pháp hiện đại, như Inception và ResNet, và trích xuất nội dung cụ thể qua phương pháp You Only Look Once (YOLO).

    Cuối cùng, bạn sẽ biết rõ về lý thuyết lẫn kỹ năng thực tế. Ngoài ra nó còn giúp bạn giải quyết các vấn đề nâng cao về tầm nhìn máy tính.

    8 – Pro Deep Learning with TensorFlow: A Mathematical Approach to Advanced Artificial Intelligence in Python

    Tài liệu Tensorflow là gì - Pro Deep Learning with TensorFlow- A Mathematical Approach to Advanced Artificial Intelligence in Python

    Viết bởi Santanu Pattanayak, Pro Deep Learning with TensorFlow cho bạn hiểu rõ về kiến thức và trực giác toán học. Nó sẽ giúp bạn phát mình ra các cấu trúc và giải pháp deep learning mới cho riêng bạn.

    Sách còn cung cấp các bài thực hành chuyên môn để bạn có thể học deep learning dù chưa biết gì. Quyển PDLwT sẽ cho phép bạn tăng tốc nhanh chóng khi dùng TensorFlow, cũng như tối ưu hóa các kiến trúc deep learning khác nhau.

    Mang nhiều khái niệm thực hành đa dạng về deep learning được nhấn mạnh có liên quan trong bất kỳ ngành nào. Code trong tài liệu tham khảo còny có sẵn ở dạng scrypt và iPython notebook.

    9 – Practical Deep Learning for Cloud, Mobile, and Edge: Real-World AI & Computer-Vision Projects Using Python, Keras & TensorFlow

    Tài liệu Tensorflow là gì - Practical Deep Learning for Cloud, Mobile, and Edge- Real-World AI & Computer-Vision Projects Using Python, Keras & TensorFlow

    Practical Deep Learning for Cloud, Mobile, and Edge là quyển sách viết bởi Anirudh Koul, Siddha Ganju, và Meher Kasam. Nếu bạn muốn dựng các ứng dụng thực hành deep learning cho đám mây, di động hay trình duyệt thì quyển này sẽ rất thích hợp cho bạn.

    Sách dạy cho bạn quá trình chuyển đổi từ 1 ý tưởng trở thành 1 thứ gì đó mà mọi người có thể sử dụng. Sách còn chỉ cho bạn cách phát triển trí tuệ nhân tạo trong pham vi rộng các thiết bị, bao gồm Raspberry Pi và Google Coral. Bạn sẽ nhận được nhiều mẹo thực hành cho việc tối đa hóa độ chính xác và tốc độ các model.

    10 – Deep Learning: A Practitioner’s Approach

    Tài liệu Tensorflow là gì- Deep Learning- A Practitioner's Approach

    Quyển không thể thiếu nếu bạn đang học tập và làm việc có liên quan tới lĩnh vực Deep Learning. Được viết bởi Josh Patterson và Adam Gibson. Cuốn hướng dẫn thực hành này không những cung cấp thông tin thiết thực nhất về deep learning mà còn giúp bạn bắt đầu xây dựng mạng lưới deep learning hiệu quả.

    Bạn sẽ được học phần lý thuyết tổng quát của deep learning trước khi được giới thiệu Deeplearning4j (DL4J) nguồn mở của các tác giả, 1 thư viện để phát triển quy trình công việc trong sản xuất. Bằng cách sử dụng các ví dụ thực tế, bạn sẽ tìm hiểu các phương pháp và chiến thuật 1 cách dễ dàng.

    Tổng kết về Tensorflow

    Trong những năm gần đây, TensorFlow chính là thư viện deep learning nổi tiếng nhất. Người dùng TensorFlow có thể dựng bất kỳ cấu trúc deep learning nào, như CNN, RNN hay artificial neural network – mạng lưới thần kinh nhân tạo.

    TensorFlow được dùng nhiều nhất bởi academic, startup và các công ty lớn. Google dùng TensorFlow trong hầu hết tất cả các sản phẩm thường nhật của họ. Bao gồm Gmail, Photo và hệ thống tìm kiếm Google.

    Người dùng ưu dùng TensorFlow vì bạn có thể deploy at scale khá là dễ dàng cũng như nó có thể hoạt động trên đám mây hay bất kỳ thiết bị di động nào như iOS hay Android.

    Đội ngũ Google Brain đã phát triển TensorFlow để làm khoảng cách giữa các nhà nghiên cứu và lập trình viên sản phẩm lại gần nhau hơn. Năm 2015, họ công khai TensorFlow và nó dần trở nên phổ biến. Ngày nay, TensorFlow đã thành thu viện deep learning với nhiều repo nhất trên GitHub.

    Theo topdev.vn

  • Châm ngôn cuộc sống

    Thế giới quả là rộng lớn và chúng ta còn rất nhiều việc phải làm...

    ĐỊA CHỈ

    Tòa nhà Technosoft, ngõ 15, Duy Tân, Cầu Giấy, HN

    EMAIL

    mr.lenovi@mail.com

    ĐIỆN THOẠI

    0972 783 945