tf.estimator.inputs.numpy_input_fn
def numpy_input_fn(x,
y=None,
batch_size=128,
num_epochs=1,
shuffle=None,
queue_capacity=1000,
num_threads=1):
- x是訓練資料,使用numpy_input_fn時就是numpy array的格式。使用Pandas的時候就是dataframe的格式。
- y是标簽。
- batch_size,每一次疊代的時候選擇的樣本個數,預設選擇是128個樣本。
- num_epochs,一個epoch是指把整個資料集訓練一次。
-
epoch=None,steps=100,batch_size=128:
當epoch=None的時候就是說,訓練的停止條件是達到疊代次數100。(這個時候其實可以算得到整個資料集被訓練了100/(3328/128)=3.84次)
-
epoch=1,steps=100,batch_size=128:
整個資料集共3328條資料,batch_size為128,是以疊代26次(3328/128)時可以實作整個資料集被訓練了一次,是以實際上疊代26次就停止訓練了。
-
epoch=4,steps=100,batch_size=128:
和上面類似,隻不過這裡的epoch=4,故資料集總共需要被訓練4次,故疊代次數總共需要4*(3328/128)=104次,但是104>100次,是以100次的時候訓練也停止了。
-
epoch=100,steps=None,batch_size=128:
這個時候steps不指定意味着停止條件是達到epoch的次數。是以當整個資料集被訓練了100次的時候停止訓練。此時的疊代次數其實是(3328/128)*100=2600次。
-
train_input_fn = tf.estimator.inputs.numpy_input_fn(
x={"x": train_data},
y=train_labels,
batch_size=100,
num_epochs=None,
shuffle=True)
eval_input_fn = tf.estimator.inputs.numpy_input_fn(
x={"x":eval_data},
y=eval_labels,
num_epochs=1,
shuffle=False)
https://blog.csdn.net/qq_22238533/article/details/79005221
tf.layers.conv2d
def conv2d(inputs,
filters,
kernel_size,
strides=(1, 1),
padding='valid',
data_format='channels_last',
dilation_rate=(1, 1),
activation=None,
use_bias=True,
kernel_initializer=None,
bias_initializer=init_ops.zeros_initializer(),
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
trainable=True,
name=None,
reuse=None):
- inputs:Tensor 輸入
- filters:整數,表示輸出空間的維數(即卷積過濾器的數量)
- kernel_size:一個整數,或者包含了兩個整數的元組/隊列,表示卷積窗的高和寬。如果是一個整數,則寬高相等。
- strides:一個整數,或者包含了兩個整數的元組/隊列,表示卷積的縱向和橫向的步長。如果是一個整數,則橫縱步長相等。另外, strides 不等于1 和 dilation_rate 不等于1 這兩種情況不能同時存在。
- padding:“valid” 或者 “same”(不區分大小寫)。“valid” 表示不夠卷積核大小的塊就丢棄,"same"表示不夠卷積核大小的塊就補0。
- data_format:channels_last 或者 channels_first,表示輸入次元的排序。
- dilation_rate:一個整數,或者包含了兩個整數的元組/隊列,表示使用擴張卷積時的擴張率。如果是一個整數,則所有方向的擴張率相等。另外, strides 不等于1 和 dilation_rate 不等于1 這兩種情況不能同時存在。
- activation:激活函數。如果是None則為線性函數。
- use_bias:Boolean類型,表示是否使用偏差向量。
- kernel_initializer:卷積核的初始化。
- bias_initializer:偏差向量的初始化。如果是None,則使用預設的初始值。
- kernel_regularizer:卷積核的正則項
- bias_regularizer:偏差向量的正則項
- activity_regularizer:輸出的正則函數
- kernel_constraint:映射函數,當核被Optimizer更新後應用到核上。Optimizer 用來實作對權重矩陣的範數限制或者值限制。映射函數必須将未被影射的變量作為輸入,且一定輸出映射後的變量(有相同的大小)。做異步的分布式訓練時,使用限制可能是不安全的。
- bias_constraint:映射函數,當偏差向量被Optimizer更新後應用到偏差向量上。
- trainable:Boolean類型。
- name:字元串,層的名字。
- reuse:Boolean類型,表示是否可以重複使用具有相同名字的前一層的權重。
https://blog.csdn.net/HappyRocking/article/details/80243790
tf.layers.max_pooling2d
def max_pooling2d(inputs,
pool_size, strides,
padding='valid', data_format='channels_last',
name=None):
- pool_size:一個整數或者2個整數的元組/清單:(pool_height,pool_width),指定池化視窗的大小。 可以是單個整數,以為所有空間次元指定相同值。
- strides:一個整數或者2個整數的元組/清單,指定池操作的步幅。 可以是單個整數,以為所有空間次元指定相同值。
- padding:字元串,“valid”或者”same”
- data_format:一個字元串,channels_last(預設)或channels_first中的一個,輸入中次元的排序,channels_last對應于具有形狀(batch,height, width, channels)的輸入,而channels_first對應于具有形狀(batch, channels, height,width)的輸入。
- name:層的名稱。
tf.layers.dropout
def dropout(inputs,
rate=0.5,
noise_shape=None,
seed=None,
training=False,
name=None):
- inputs:輸入的張量
- rate: 丢失率,表示的是drop_prob而不是keep_prob
- training: True時會加入dropout, false即測試時不會加入dropout
- noise_shape : 一個1維的int32張量,代表了随機産生“保留/丢棄”标志的shape。
- seed : 整形變量,随機數種子。
- name: 名字。
tf.layers.Flatten
x = tf.placeholder(shape=(None, 4, 4), dtype='float32')
y = flatten(x)
# now `y` has shape `(None, 16)`
x = tf.placeholder(shape=(None, 3, None), dtype='float32')
y = flatten(x)
# now `y` has shape `(None, None)`