참고: 이 기사의 예에서는 Python 버전 3.5.6 및 Tensorflow 버전 2.0을 사용합니다.
Introduction
Tensorflow는 Google에서 출시한 기계 학습 오픈 소스 아티팩트이며 Python에 대한 우수한 언어 지원 기능을 갖추고 있으며 CPU를 지원합니다. , GPU 및 Google TPU 및 기타 하드웨어를 갖추고 있으며 이미 다양한 모델과 알고리즘을 보유하고 있습니다. 현재 Tensorflow는 텍스트 처리, 음성 인식, 이미지 인식 등 다양한 머신러닝 및 딥러닝 분야에서 널리 사용되고 있습니다.
기본 프레임 워크는 응용 프로그램 계층, 인터페이스 계층 및 핵심 계층으로 권장하는 세 가지 레이어로 나뉩니다. 관련 Python, C++, Java 등의 언어에 대한 학습 라이브러리, 예측 라이브러리 및 프로그래밍 환경은 주로 계산 그래프 구성을 구현하는 웹 시스템의 프런트 엔드와 유사합니다.
인터페이스 레이어
는 Tensorflow 함수 모듈을 캡슐화하여 다른 언어 플랫폼에서의 호출을 용이하게 합니다. 코어 레이어에서 가장 중요한 부분에는 디바이스 레이어, 네트워크 레이어, 데이터 연산 레이어, 애플리케이션 레이어 계산을 수행하는 그래프 컴퓨팅 레이어가 포함됩니다.
1. 장치 계층
은 다양한 하드웨어 장치에서의 Tensorflow 구현을 포함하며 주로 CPU, GPU, 모바일 및 기타 장치를 지원하고 다양한 하드웨어 장치에서 계산 명령 변환을 실현하며 상위에 통합 인터페이스를 제공합니다. 레이어를 구축하고 크로스 플랫폼 기능을 구현합니다.2. 네트워크 계층
네트워크 계층에는 주로 RPC 및 RDMA 통신 프로토콜이 포함되어 있어 서로 다른 장치 간의 데이터 전송 및 업데이트를 실현합니다. 이러한 프로토콜은 분산 컴퓨팅에 사용됩니다.3. 데이터 연산 계층
텐서를 처리 대상으로 삼아 텐서의 다양한 연산과 계산을 구현합니다.4. 그래프 컴퓨팅 계층
에는 분산 컴퓨팅 그래프와 로컬 컴퓨팅 그래프의 구현이 포함되어 있으며 그래프의 생성, 편집, 최적화 및 실행을 실현합니다.디자인 개념
Tensorflow는 계산 그래프에서 "텐서의 흐름"으로 이해될 수 있는데, 여기서 Tensor(텐서)는 계산 그래프에서 가장자리를 나타내고 Flow(플로우)는 계산 그래프에서 노드를 나타냅니다. 수행된 작업으로 인해 발생하는 데이터 흐름입니다. 설계 개념은 데이터 흐름을 기반으로 합니다. 해당 기계 학습 모델을 구축한 후 학습 데이터를 사용하여 모델에 데이터를 흐르게 하고, 결과를 역전파 형태로 모델의 매개변수에 피드백하여 조정합니다. . 매개변수를 선택하고 조정된 매개변수를 사용하여 훈련 데이터를 다시 반복적으로 계산합니다.프로그래밍 기능
프로그래밍 기능에는 두 가지가 있습니다.그래프의 정의와 그래프의 동작이 완전히 분리되어 있습니다.
텐서플로우에서는 다양한 변수를 미리 정의하고 관련 데이터 흐름도를 구축해야 합니다. 데이터 흐름도 다양한 변수 간의 계산 관계를 생성하고 그래프 정의를 완성하려면 연산의 입력 데이터를 넣어야 출력 값이 형성됩니다. 그래프 계산은 세션에서 수행됩니다.텐서플로우의 관련 계산은 그래프에 정의되어 있으며, 그래프의 특정 실행 환경은 세션에 있어야만 계산을 시작할 수 있습니다. 세션을 닫은 후에는 더 이상 계산을 수행할 수 없습니다.
예:import tensorflow as tf tf.compat.v1.disable_eager_execution() a = 3 b = 4 c = 5 y = tf.add(a*b, c) print(y) a = tf.constant(3, tf.int32) b = tf.constant(4, tf.int32) c = tf.constant(5, tf.int32) y = tf.add(a*b, c) print(y) session = tf.compat.v1.Session() print(session.run(y)) session.close()그래프가 생성된 후 세션에서 데이터 계산이 수행되고 최종 결과가 출력되는 것을 볼 수 있습니다. 설계의 장점은 학습 과정에서 가장 많이 소비되는 부분이 데이터 학습입니다. 이렇게 설계하면 계산을 수행할 때 그래프가 결정되고 계산은 단지 지속적인 반복 프로세스.
기본 개념
Tensor
Tensor는 텐서플로우에서 가장 중요한 데이터 구조입니다. 텐서는 계산 그래프에서 데이터 전송에 사용됩니다. 계산 그래프에 텐서가 추가됩니다.session
Session은 실제로 그래프와 상호 작용하는 Tensorflow의 계산 그래프의 특정 실행자입니다. 세션에는 여러 그래프가 있을 수 있습니다. 세션의 주요 목적은 계산을 위해 그래프에 훈련 데이터를 추가하고 그래프의 구조를 수정하는 것입니다. 호출 모드에서는 with 문을 사용하는 것이 좋습니다.with session: session.run() Variable변수는 그래프의 다양한 계산 매개변수를 나타내며, 머신러닝 알고리즘은 이러한 변수의 상태를 조정하여 최적화됩니다. 변수를 생성하려면 tf.Variable()을 사용해야 합니다. 텐서를 입력하면 변수를 선언한 후 초기화해야 사용할 수 있습니다.
예:
import tensorflow as tf tf.compat.v1.disable_eager_execution() tensor = tf.ones([1, 3]) test_var = tf.Variable(tensor) # 初始化变量 init_op = tf.compat.v1.global_variables_initializer() session = tf.compat.v1.Session() with session: print("tensor is ", session.run(tensor)) # print("test_var is ", session.run(test_var)) session.run(init_op) print("after init, test_var is", session.run(test_var))
Placeholder
Placeholder는 입력 및 출력 데이터의 형식을 나타내는 데 사용되며 데이터 위치를 선언하고 지정된 유형 및 모양의 데이터가 전달되도록 허용하며 세션에서, 계산 그래프가 실행 중일 때 획득한 데이터를 사용하여 계산을 수행하며, 획득한 데이터는 계산이 완료된 후 사라집니다. 예:x = tf.compat.v1.placeholder(tf.int32) y = tf.compat.v1.placeholder(tf.int32) z = tf.add(x, y) session = tf.compat.v1.Session() with session: print(session.run([z], feed_dict={x: [1, 2], y: [2, 3]}))Operation Operation은 그래프의 노드입니다. 입력과 출력은 Tensor입니다. 해당 기능은 다음을 포함한 다양한 작업을 완료하는 것입니다. 수학 연산: add, sub, mul, div, exp ...배열 연산: concat, Slice, Split, Rank ...행렬 연산: matmul, Matrixinverse ...
신경망 구축: Softmax, Sigmoid, Relu ...
检查点:save, restore ...
队列和同步:enqueue, dequeue, mutexacquire, mutexrelease ...
张量控制:merge, switch, enter, leave ...
Queue
队列,图中有状态的节点。包含入列(endqueue)和出列(dequeue)两个操作,入列返回计算图中的一个操作节点,出列返回一个tensor值。
其中,队列有两种:
1. FIFOQueue
按入列顺序出列的队列,在需要读入的训练样本有序时使用。举个例子:
fifo_queue = tf.compat.v1.FIFOQueue(10, 'int32') init = fifo_queue.enqueue_many(([1, 2, 3, 4, 5, 6], )) with tf.compat.v1.Session() as session: session.run(init) queue_size = session.run(fifo_queue.size()) for item in range(queue_size): print('fifo_queue', session.run(fifo_queue.dequeue()))
2. RandomShuffleQueue
以随机顺序出列的队列,读入的训练样本无序时使用。举个例子:
rs_queue = tf.compat.v1.RandomShuffleQueue(capacity=5, min_after_dequeue=0, dtypes='int32') init = rs_queue.enqueue_many(([1, 2, 3, 4, 5], )) with tf.compat.v1.Session() as session: session.run(init) queue_size = session.run(rs_queue.size()) for i in range(queue_size): print('rs_queue', session.run(rs_queue.dequeue()))
本文来自 python教程 栏目,欢迎学习!
위 내용은 Tensorflow 기본 사항(머신러닝 오픈 소스 소프트웨어 라이브러리)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!