成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

第1話 TensorFlow基礎(chǔ)概念 (計(jì)算圖、張量、會(huì)話、常量、變量、占位符)

makeFoxPlay / 2688人閱讀

摘要:張量的命名形式,為節(jié)點(diǎn)的名稱,表示當(dāng)前張量來(lái)自來(lái)自節(jié)點(diǎn)的第幾個(gè)輸出。,要求的輸入對(duì)象是一個(gè)但是它的輸出是一個(gè)數(shù)組輸出其他基本概念常量變量占位符常量中使用常量很簡(jiǎn)單,如,。返回的的類型返回的的形狀的名字布爾值,用于驗(yàn)證值的形狀。


(代碼基于tensorflow 1.14 cpu版本,讀者需要具有良好的python基礎(chǔ)線性代數(shù)知識(shí))

第三章主要介紹TensorFlow計(jì)算模型、數(shù)據(jù)模型運(yùn)行模型,對(duì)TensorFlow的工作原理能有一個(gè)大致了解。

TensorFlow程序一般分為兩個(gè)階段。第一階段:定義計(jì)算圖中所有的計(jì)算,然后定義一個(gè)計(jì)算來(lái)得到他們的和;第二階段:執(zhí)行計(jì)算。

1 計(jì)算圖————TensorFlow的計(jì)算模型 1.1 計(jì)算圖的概念

TensorFlow這個(gè)單詞由兩部分組成:tensor代表張量,是數(shù)據(jù)模型;flow代表流,是計(jì)算模型。下面就引出Flow的具體內(nèi)涵。

流動(dòng)的事務(wù)具有有向性,計(jì)算圖是一個(gè)具有 “每一個(gè)節(jié)點(diǎn)都是計(jì)算圖上的一個(gè)節(jié)點(diǎn),而節(jié)點(diǎn)之間的邊描述了計(jì)算之間的依賴關(guān)系” 性質(zhì)的有向圖。(計(jì)算圖和數(shù)據(jù)結(jié)構(gòu)這門課程中的有向圖具有高度的相似性,現(xiàn)在可以回憶一下這段記憶)

計(jì)算圖由邊(表示依賴關(guān)系,又被叫做“張量”)和節(jié)點(diǎn)(又被叫做“神經(jīng)元”、“算子”)組成。如果tensorflow程序只定義了一個(gè)Graph,那其內(nèi)部包含了所有的op和tensor

1.2 計(jì)算圖的使用

在TensorFlow程序中,系統(tǒng)會(huì)自動(dòng)維護(hù)一個(gè)默認(rèn)的計(jì)算圖,通過(guò)tf.get_default_graph()函數(shù)可以獲取這個(gè)默認(rèn)的計(jì)算圖。

import tensorflow as tf

a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([1.0, 2.0], name="b")

result = a + b

#通過(guò)a.graph屬性可以查看這個(gè)張量所屬的計(jì)算圖。因?yàn)闆](méi)有特意指定,所以這個(gè)計(jì)算圖應(yīng)該等于當(dāng)前默認(rèn)的計(jì)算圖
print(a.graph is tf.get_default_graph())

"""
輸出>>>
True
"""
Tensorflow通過(guò)計(jì)算圖把張量和算子等組合在一起,而在很多TensorFlow程序中,看不到Graph,這是為何?這是因?yàn)門ensorFlow有個(gè)默認(rèn)缺省的graph
(即Graph.as_default()),我們添加的tensor和op等都會(huì)自動(dòng)添加到這個(gè)缺省計(jì)算圖中,如果沒(méi)有特別要求,使用這個(gè)默認(rèn)缺省的Graph即可。當(dāng)然,如果需要一些更復(fù)雜的計(jì)算,比如需要?jiǎng)?chuàng)建兩個(gè)相互之間沒(méi)有交互的模型,就需要自定義計(jì)算圖。

除了使用默認(rèn)的計(jì)算圖,TensorFlow支持通過(guò)tf.Graph函數(shù)來(lái)生成新的計(jì)算圖。TensorFlow中的計(jì)算圖不僅可以隔絕張量和計(jì)算,它還提供了管理張量和計(jì)算的機(jī)制,不同計(jì)算圖上的張量和運(yùn)算不會(huì)共享。
以下代碼示意了如何通過(guò)在不同的計(jì)算圖上定義和使用變量。

import tensorflow as tf

g1 = tf.Graph()
with g1.as_default():
    v = tf.get_variable("v", shape=[1], initializer=tf.zeros_initializer)

g2 = tf.Graph()
with g2.as_default():
    v = tf.get_variable("v", shape=[1], initializer=tf.ones_initializer)
"""
tf.Graph()沒(méi)有實(shí)現(xiàn)__enter__()方法,做不到下面那優(yōu)雅pythonic的寫(xiě)法。
with tf.Graph() as g2:
    v = tf.get_variable("v", shape=[1], initializer=tf.ones_initializer)
    
這樣寫(xiě)了就會(huì)拋出AttributeError異常

Traceback (most recent call last):
  File "D:/bb/TensorFlow/Untitled1.py", line 7, in 
    with tf.Graph() as g2:
AttributeError: __enter__
"""

with tf.Session(graph=g1) as sess:
    tf.global_variables_initializer().run()
    with tf.variable_scope("", reuse=True):
        print(sess.run(tf.get_variable("v")))

with tf.Session(graph=g2) as sess:
    tf.global_variables_initializer().run()
    with tf.variable_scope("", reuse=True):
        print(sess.run(tf.get_variable("v")))
"""
輸出>>>
[0.]
[1.]
注:先不要管代碼是什么含義,繼續(xù)往下看
"""

如果有多個(gè)Graph,建議不使用默認(rèn)的Graph,直接無(wú)視或者為其分配一個(gè)句柄,避免發(fā)生混亂

import tensorflow as tf

graph1 = tf.Graph()
graph2 = tf.Graph()  # 直接無(wú)視默認(rèn)缺省的Graph
# graph2 = tf.get_default_graph() 為其分配一個(gè)句柄

with graph1.as_default():
    pass

with graph2.as_default():
    pass
2 張量————TensorFlow數(shù)據(jù)類型 2.1 張量的概念

在TensorFlow的程序中,所有的數(shù)據(jù)都通過(guò)張量(tensor)的形式表示。

張量(tensor)理解為多維數(shù)組(multidimensional array),0階張量是標(biāo)量(scalar),1階是向量(vector)(即一維數(shù)組),2階是二維數(shù)組,n階為n維數(shù)組。

TensorFlow的運(yùn)算結(jié)果不是一個(gè)數(shù),而是一個(gè)張量結(jié)構(gòu)。(運(yùn)算和運(yùn)行在tensorflow語(yǔ)境中不同,運(yùn)算就是用過(guò)運(yùn)算符操作,運(yùn)行就和會(huì)話有關(guān),3.3會(huì)提到)

import tensorflow as tf

a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([1.0, 2.0], name="b")

result = tf.add(a, b, name="add")

print(result)
"""
輸出>>>
Tensor("add:0", shape=(2,), dtype=float32)
"""

一個(gè)張量保存了三個(gè)屬性:名字(name)、維度(shape)和類型(type)

名字name一個(gè)張量的唯一標(biāo)識(shí)符以及這個(gè)張量是如何計(jì)算出來(lái)的。

張量的命名形式:“node:src_output”,node為節(jié)點(diǎn)的名稱,src_output表示當(dāng)前張量來(lái)自來(lái)自節(jié)點(diǎn)的第幾個(gè)輸出。
比如上面的代碼的輸出"add:0"說(shuō)明張量result是計(jì)算節(jié)點(diǎn)“add”輸出的第一個(gè)結(jié)果(編號(hào)從0開(kāi)始)

張量和計(jì)算圖上節(jié)點(diǎn)的計(jì)算結(jié)果是一一對(duì)應(yīng)的。

維度shape:描述了一個(gè)張量的維度信息。

上面樣例的shape(2,)表示一個(gè)一維數(shù)組,這個(gè)數(shù)組的長(zhǎng)度是2。

類型type:每一個(gè)張量都有一個(gè)唯一的類型,常用的是tf.int32,tf.float32。參與運(yùn)算的張量需要保持?jǐn)?shù)據(jù)類型相同,不然會(huì)報(bào)錯(cuò)。

TensorFlow支持的14種數(shù)據(jù)類型
有符號(hào)整型
tf.int8:8位整數(shù)
tf.int16:16位整數(shù)
tf.int32:32位整數(shù)
tf.int64:64位整數(shù)
無(wú)符號(hào)整型
tf.uint8:8位無(wú)符號(hào)整數(shù)
tf.uint16:16位無(wú)符號(hào)整數(shù)
浮點(diǎn)型
tf.float16:16位浮點(diǎn)數(shù)
tf.float32:32位浮點(diǎn)數(shù)
tf.float64:64位浮點(diǎn)數(shù)
tf.double:等同于tf.float64
字符串型
tf.string:字符串
布爾型
tf.bool:布爾型
復(fù)數(shù)型
tf.complex64:64位復(fù)數(shù)
tf.complex128:128位復(fù)數(shù)

TensorFlow數(shù)據(jù)類型和Python原生數(shù)據(jù)類型的關(guān)系

TensorFlow接受了Python自己的原生數(shù)據(jù)類型,例如Python中的布爾值類型,數(shù)值數(shù)據(jù)類型(整數(shù),浮點(diǎn)數(shù))和字符串類型。單一值將轉(zhuǎn)換為0維張量(標(biāo)量),列表值將轉(zhuǎn)換為1維張量(向量),列表套列表將被轉(zhuǎn)換成2維張量(矩陣)

TensorFlow數(shù)據(jù)類型和Numpy數(shù)據(jù)類型的關(guān)系

你可能已經(jīng)注意到了Numpy和TensorFlow有很多相似之處。TensorFlow在設(shè)計(jì)之初就希望能夠與Numpy有著很好的集成效果。Numpy軟件包現(xiàn)在已經(jīng)成為數(shù)據(jù)科學(xué)的通用語(yǔ)言。

TensorFlow數(shù)據(jù)類型很多也是基于Numpy的,事實(shí)上,如果你令 np.int32==tf.int32將會(huì)返回True.你也可以直接傳遞Numpy數(shù)據(jù)類型直接給TensorFlow中的ops。

tf.ones([2, 2], np.float32) ==> [[1.0 1.0], [1.0 1.0]]

請(qǐng)記得,我們的好朋友會(huì)話tf.Session.run(),要求的輸入對(duì)象是一個(gè)Tensor但是它的輸出是一個(gè)Numpy數(shù)組。事實(shí)上,在絕大多數(shù)場(chǎng)合,你可以同時(shí)混合使用TensorFlow類型和Numpy類型。

2.2 張量的使用

張量使用可以歸結(jié)為兩大類。

1.第一類對(duì)中間計(jì)算結(jié)果的引用,提升代碼的可讀性

使用張量和不使用張量的對(duì)比

import tensorflow as tf

#使用張量記錄
a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([1.0, 2.0], name="b")
result1 = a + b

#不使用張量,簡(jiǎn)潔但是可讀性降低
result2 = tf.constant([1.0, 2.0], name="a") + tf.constant([1.0, 2.0], name="b")

#jie"guo"xiang"t
print(result1)
print(result2)

"""
輸出>>>
Tensor("add:0", shape=(2,), dtype=float32)
Tensor("add_1:0", shape=(2,), dtype=float32)
"""

2.第二類情況是計(jì)算圖構(gòu)造完成后,張量可以用來(lái)獲取計(jì)算結(jié)果
使用tf.Session().run(result)語(yǔ)句可以得到計(jì)算結(jié)果

3 會(huì)話————TensorFlow運(yùn)行模型 3.1會(huì)話的概念

計(jì)算圖描述計(jì)算
張量是組織數(shù)據(jù)
會(huì)話執(zhí)行定義好的運(yùn)算

會(huì)話管理TensorFlow程序運(yùn)行時(shí)的所有資源,并在運(yùn)行結(jié)束后釋放所有的資源。

會(huì)話機(jī)制類似于計(jì)算圖機(jī)制:
計(jì)算圖:在一開(kāi)始就有一個(gè)默認(rèn)的計(jì)算圖存在,并且沒(méi)有特別指定,運(yùn)算會(huì)自動(dòng)加入到這個(gè)默認(rèn)的計(jì)算圖中
會(huì)話:會(huì)要手動(dòng)創(chuàng)建,張量自動(dòng)添加。

3.2會(huì)話的使用

TensorFlow使用會(huì)話模式有兩種方式

1.普通模式

import tensorflow as tf

# 加入了一個(gè)異常處理機(jī)制,確保釋放資源
try:
    sess = tf.Session()  # 創(chuàng)建一個(gè)會(huì)話
    sess.run(...)  # 運(yùn)行,得到計(jì)算結(jié)果
except Exception:
    pass
finally:
    sess.close()  # 關(guān)閉會(huì)話,釋放資源

2.上下文模式
這才是pythonic的寫(xiě)法,極力推薦

import tensorflow as tf

with tf.Session as sess:
    sess.run()
#運(yùn)行到這個(gè)位置會(huì)自動(dòng)釋放sess的資源,優(yōu)雅尼克

這是2.2程序的引用,會(huì)話的寫(xiě)法多種多樣,我們應(yīng)用最優(yōu)雅、最pythinc的代碼去闡述。

import tensorflow as tf

a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([1.0, 2.0], name="b")

result = tf.add(a, b, name="add")

with tf.Session() as sess:
    # tf.Session.run(),要求的輸入對(duì)象是一個(gè)Tensor但是它的輸出是一個(gè)Numpy數(shù)組
    print(sess.run(result))
"""
輸出>>>
[2. 4.]
"""
4 其他基本概念——常量、變量、占位符 4.1 常量

Python中使用常量很簡(jiǎn)單,如a=123,b="python"。TensorFlow表示常量稍微麻煩一點(diǎn),需要使用tf.constant這個(gè)類,具體格式如下:

tf.constant(value, dtype=None, shape=None, name="Const", verify_shape=False)

其中各參數(shù)說(shuō)明如下:

value : 一個(gè)dtype類型(如果指定了)的常量值(列表)。要注意的是,若value是一個(gè)列表,那么列表的長(zhǎng)度不能夠超過(guò)形狀參數(shù)指定的大小(如果指定了)。如果列表長(zhǎng)度小于指定的大小,那么多余的空間由列表的最后一個(gè)元素來(lái)填充。

dtype : 返回的tensor的類型

shape : 返回的tensorflow的形狀

name : tensor的名字

verify_shape : 布爾值,用于驗(yàn)證值的形狀。

示例如下:

import tensorflow as tf

# 構(gòu)建計(jì)算圖
a = tf.constant("something", name="a")

print(a)

with tf.Session() as sess:  # 創(chuàng)造會(huì)話
    result = sess.run(a)  # 在會(huì)話中執(zhí)行張量a
    print(result)

"""
輸出>>>
Tensor("a:0", shape=(2,), dtype=float32)
b"something"
"""
4.2 變量

變量是TensorFlow中的核心概念,創(chuàng)建一個(gè)類使用tf.Variable,具體格式如下:

tf.Variable(initial_value=None,trainable=None,collections=None,validate_shape=True,caching_device=None,name=None,variable_def=None,dtype=None,expected_shape=None,import_scope=None,constraint=None,use_resource=None,synchronization=VariableSynchronization.AUTO, aggregation=VariableAggregation.NONE,shape=None)

主要參數(shù)說(shuō)明

initial_value一個(gè) Tensor類型或者是能夠轉(zhuǎn)化為Tensor的python對(duì)象類型。它是這個(gè)變量的初始值。這個(gè)初始值必須指定形狀信息,不然后面的參數(shù)validate_shape需要設(shè)置為False。當(dāng)然,也能夠傳入一個(gè)無(wú)參數(shù)可調(diào)用并且返回指定初始值的對(duì)象,在這種情況下,dtype必須指定。

trainable :如果設(shè)置為True (默認(rèn)也為True),這個(gè)變量可以被優(yōu)化器類(optimizer)自動(dòng)修改Variable的值;如果設(shè)置為False,則說(shuō)明Variable 只能手工修改,不允許使用優(yōu)化器類自動(dòng)修改。

collections :圖的collection鍵列表,新的變量被添加到這些collection 中。默認(rèn)是

validate_shape :如果是False的話,就允許變量能夠被一個(gè)形狀未知的值初始化,默認(rèn)是True,表示必須知道形狀。

caching_device :可選,描述設(shè)備的字符串,表示哪個(gè)設(shè)備用來(lái)為讀取緩存。默認(rèn)是變量的device。

name :可選,變量的名稱。

dtype如果被設(shè)置,初始化的值就會(huì)按照這里的類型來(lái)定。

4.2.1.創(chuàng)建變量

1.現(xiàn)在讓我們使用tf.Variable()創(chuàng)建變量,這是最簡(jiǎn)單的、最常用的變量創(chuàng)建方法。用的最多的兩個(gè)參數(shù)initial_value和name

import tensorflow as tf

girl = tf.Variable("安靜宇", name="big")  # 這個(gè)name大有作用,后面會(huì)講到,需要注意的是,name的值不可以是中文,中文會(huì)報(bào)錯(cuò)

god = tf.Variable("安靜宇", name="big")  # 使用tf.Variable()創(chuàng)建的實(shí)例,實(shí)例名是唯一標(biāo)識(shí)符( Variable()內(nèi)的參數(shù)都可以重復(fù) )
# 寫(xiě)作girl = tf.Variable("安靜宇", name="big"),就會(huì)覆蓋第一個(gè)girl

print("initializer", girl.initializer)
print("initial_value", girl.initial_value)
print("graph", girl.graph)
print("shape", girl.shape)
print("name", girl.name)
print("dtype", girl.dtype)
print("value", girl.value())

"""
輸出>>>
initializer name: "big/Assign"
op: "Assign"
input: "big"
input: "big/initial_value"
attr {
  key: "T"
  value {
    type: DT_STRING
  }
}
attr {
  key: "_class"
  value {
    list {
      s: "loc:@big"
    }
  }
}
attr {
  key: "use_locking"
  value {
    b: true
  }
}
attr {
  key: "validate_shape"
  value {
    b: true
  }
}

initial_value Tensor("big/initial_value:0", shape=(), dtype=string)
graph 
shape ()
name big:0
dtype 
value Tensor("big/read:0", shape=(), dtype=string)
"""

2.除了使用tf.Variable()創(chuàng)建變量,還有一個(gè)孿生兄弟,tf.get_variable(),他兩的業(yè)務(wù)邏輯還是很不一樣的,使用的唯一標(biāo)識(shí)符不一樣,前者使用實(shí)例名作為唯一標(biāo)志,后者使用name參數(shù)作為唯一標(biāo)志。

具體用法可以參考這篇博客Variable和get_variable的用法以及區(qū)別

按照習(xí)慣,get開(kāi)頭的函數(shù)都是“查詢”、“獲取”的意思,但是tf.get_variable()是創(chuàng)建變量,get取的是“創(chuàng)建”的意思
4.2.2.初始化變量

tensorflow中,程序存在變量,在使用前必須初始化

初始化變量有兩個(gè)方法

一個(gè)一個(gè)手動(dòng)初始化

一次性全局初始化

手動(dòng)初始化就是

ses.run(var1.initializer)
ses.run(var2.initializer)
ses.run(var3.initializer)

一次性全局初始化只要使用一個(gè)函數(shù) tf.global_variables_initializer()

init_op = tf.global_variables_initializer()
sess.run(init_op)

貼一個(gè)完整代碼

import tensorflow as tf

girl = tf.Variable("安靜宇", name="cute")

god = tf.Variable("安靜宇", name="pretty")

with tf.Session() as sess:
    # 必須先初始化變量才能使用,tf.global_variables_initializer()可以初始化所有的變量
    sess.run(girl.initializer)
    sess.run(god.initializer)
    # 等價(jià)于 sess.run(tf.global_variables_initializer())
    print(sess.run(girl).decode())
    print(sess.run(god).decode())

"""
輸出>>>
安靜宇
安靜宇
"""
4.2.3.保存和恢復(fù)變量

最后給你們看看安靜宇

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/45120.html

相關(guān)文章

  • 從框架優(yōu)缺點(diǎn)說(shuō)起,這是一份TensorFlow入門極簡(jiǎn)教程

    摘要:第一個(gè)主流產(chǎn)品級(jí)深度學(xué)習(xí)庫(kù),于年由啟動(dòng)。在年月日宣布,的開(kāi)發(fā)將終止。張量中最基本的單位是常量變量和占位符。占位符并沒(méi)有初始值,它只會(huì)分配必要的內(nèi)存。是一個(gè)字典,在字典中需要給出每一個(gè)用到的占位符的取值。 為什么選擇 TensorFlow?在本文中,我們將對(duì)比當(dāng)前最流行的深度學(xué)習(xí)框架(包括 Caffe、Theano、PyTorch、TensorFlow 和 Keras),幫助你為應(yīng)用選擇最合適...

    AlphaWatch 評(píng)論0 收藏0
  • tensorflow

    好的,下面是一篇關(guān)于TensorFlow編程技術(shù)的文章: TensorFlow是一種強(qiáng)大的開(kāi)源機(jī)器學(xué)習(xí)框架,它可以幫助開(kāi)發(fā)者快速構(gòu)建、訓(xùn)練和部署機(jī)器學(xué)習(xí)模型。在TensorFlow中,數(shù)據(jù)流圖是用來(lái)描述計(jì)算的基本單位,而TensorFlow的編程技術(shù)則是用來(lái)構(gòu)建和操作這些數(shù)據(jù)流圖的。 一、TensorFlow的基本概念 在開(kāi)始介紹TensorFlow的編程技術(shù)之前,我們需要先了解一些基本概念...

    mochixuan 評(píng)論0 收藏1141
  • tensorflow

    當(dāng)談到深度學(xué)習(xí)框架時(shí),TensorFlow是目前最受歡迎的框架之一。它被廣泛用于各種應(yīng)用程序,包括計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理、語(yǔ)音識(shí)別等領(lǐng)域。在這篇文章中,我們將探討一些在TensorFlow編程中的技術(shù)。 1. 張量(Tensors) TensorFlow的核心概念是張量。張量是一種多維數(shù)組,可以用于表示各種數(shù)據(jù)類型,如數(shù)字、字符串等。在TensorFlow中,我們使用tf.Tensor對(duì)象來(lái)...

    iKcamp 評(píng)論0 收藏545
  • tensorflow

    當(dāng)今,深度學(xué)習(xí)已經(jīng)成為人工智能領(lǐng)域的熱門話題,而TensorFlow作為一種流行的深度學(xué)習(xí)框架,已經(jīng)成為了許多人的首選。在本篇文章中,我們將探討一些使用TensorFlow進(jìn)行編程的技術(shù)。 首先,我們需要安裝TensorFlow。TensorFlow可以在多種操作系統(tǒng)上運(yùn)行,包括Windows、Mac OS和Linux。安裝TensorFlow的最簡(jiǎn)單方法是使用Python的pip包管理器。在命...

    zgbgx 評(píng)論0 收藏604
  • tensorflow

    TensorFlow是一個(gè)流行的開(kāi)源機(jī)器學(xué)習(xí)框架,它被廣泛應(yīng)用于各種領(lǐng)域,包括自然語(yǔ)言處理、計(jì)算機(jī)視覺(jué)和語(yǔ)音識(shí)別。本文將介紹幾種TensorFlow編程技術(shù),幫助您更好地利用這個(gè)框架進(jìn)行深度學(xué)習(xí)任務(wù)。 1. 定義圖(Graphs) TensorFlow的核心是一個(gè)靜態(tài)計(jì)算圖,其中每個(gè)節(jié)點(diǎn)代表一個(gè)操作。定義圖時(shí),我們需要使用TensorFlow提供的API來(lái)創(chuàng)建節(jié)點(diǎn)和操作,然后將它們連接起來(lái)。例...

    golden_hamster 評(píng)論0 收藏1468

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<