Tensorflow⑦——반복적인 신경망 사용 방법 및 API 구현

  1. 컨벌루션 신경망과 순환 신경망의 간단한 비교
  • CNN: 컨볼루션 커널(커널)의 도움으로 기능을 추출한 후 분류, 대상 감지 및 기타 작업을 위해 후속 네트워크(예: 완전히 연결된 네트워크 Dense)로 전송됩니다. CNN은 컨볼루션 커널의 도움으로 공간 차원에서 정보를 추출 하고 컨볼루션 커널 매개변수 공간을 공유합니다.
  • RNN: 순환 코어(셀)의 도움으로 특징을 추출한 후 예측 및 기타 작업을 위해 후속 네트워크(예: 완전히 연결된 Dense 네트워크)로 보냅니다. RNN은 순환 커널의 도움으로 시간 차원에서 정보를 추출 하고 순환 커널 매개변수는 시분할됩니다.
  1. TF는 순환 계산 계층을 설명합니다 . RNN으로 보내기 전에 x_train 차원은 [전송된 샘플 수, 순환 커널의 시간 확장 단계 수 및 각 시간 단계에서 입력 기능 수]입니다.

1、tf.keras.layers.SimpleRNN

tf.keras.layers.SimpleRNN(记忆体个数, activation=‘激活函数’ , return_sequences=是否每个时刻输出ht到下一层)

activation='활성화 함수'(작성되지 않음, 기본적으로 tanh가 사용됨) return_sequences=True
각 시간 단계에서 h t 출력 , return_sequences=False 마지막 시간 단계에서만 h t 출력 (기본값)

# 举例如下
SimpleRNN(3, return_sequences=True)

2、tf.keras.layers.Embedding

tf.keras.layers.Embedding: 단어 벡터 공간 인코딩 레이어

 tf.keras.layers.Embedding(词汇表大小,编码维度)
	词汇表大小:编码一共要表示多少个单词;
	编码维度:用几个数字表达一个单词;
	输入维度:二维张量[送入样本数,循环核时间展开步数]
	输出维度:三维张量[送入样本数,循环核时间展开步数,编码维度]
# 举例如下
tf.keras.layers.Embedding(100, 3)
#对数字 1-100 进行编码,词汇表大小就是 100 ;每个自然数用三个数字表示,编码维度就是 3;所以 Embedding层的参数是 100 和 3。
# 比如数字[4] embedding 为 [0.25, 0.1, 0.11]。

RNN에 다음과 같이 쓸 수 있습니다.

x_train = np.reshape(x_train, (len(x_train), 1))
# 之后送入代码块中,在model=tf.keras.Sequential中,首先写如下代码
Embedding(5, 2) # 表示一共有5个元素,每个元素用2个维度表示

3、tensorflow.keras.layers.LSTM

여기에 이미지 설명 삽입

tensorflow.keras.layers.LSTM(记忆体个数, activation=‘激活函数’ , return_sequences=是否每个时刻输出ht到下一层)

activation='활성화 함수'(작성되지 않음, 기본적으로 tanh가 사용됨) return_sequences=True
각 시간 단계에서 h t 출력 , return_sequences=False 마지막 시간 단계에서만 h t 출력 (기본값)

# 举例如下
model = tf.keras.Sequential([
    LSTM(80, return_sequences=True),
    Dropout(0.2),
    LSTM(100),
    Dropout(0.2),
    Dense(1)
])

4. tensorflow.keras.layers.GRU

여기에 이미지 설명 삽입

tensorflow.keras.layers.GRU(记忆体个数, activation=‘激活函数’ , return_sequences=是否每个时刻输出ht到下一层)

activation='활성화 함수'(작성되지 않음, 기본적으로 tanh가 사용됨) return_sequences=True
각 시간 단계에서 h t 출력 , return_sequences=False 마지막 시간 단계에서만 h t 출력 (기본값)

# 举例如下
model = tf.keras.Sequential([
    GRU(80, return_sequences=True),
    Dropout(0.2),
    GRU(100),
    Dropout(0.2),
    Dense(1)
])

추천

출처blog.csdn.net/CRW__DREAM/article/details/127614340