tf.nn.sparse_softmax_cross_entropy_with_logits()的內部計算的理解
_sentinel=None, # pylint: disable=invalid-name
labels=None,
logits=None,
name=None):它求得是張量最後一維與標籤的交叉熵,再對最後一維求和。(其中,labels引數是一維的張量,元素是對應的索引,轉換為對應的列表再求交叉熵。比如labels是[1,2],那麼列表就是[[0,1,0],[0,0,1]]下面是labels張量的正確形式。)tf.nn.sparse_softmax_cross_entropy_with_logits(),放在圖片上,就是對一個畫素深度方向的向量,與對應的標籤做交叉熵,再求一個畫素深度方向交叉熵的和。loss值是對所有畫素點的交叉熵和取平均。一句話說,就是畫素點上求交叉熵的和, 畫素間求上一步的平均數。實驗程式碼如下:import tensorflow as tfimport numpy as npsess = tf.InteractiveSession()def index_to_list(index): list = np.zeros([2,3], dtype=int) for j in range(2): for i in range(3): if i == index[j]: list[j][i] = 1 else: list[j][i] = 0 return list# index = [1, 2]# c = index_to_list(index)# print(c)a = tf.placeholder(tf.float32, [2,3])b = tf.placeholder(tf.int64, [2])aa = [[1.0, 2.0, 3.0], [2.0, 1.0, 3.0]]bb = [2,1]cross_entropy = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=a, labels=b))c = sess.run(cross_entropy, feed_dict={a:[[1.0, 2.0, 3.0], [2.0, 1.0, 3.0]], b:[2, 1]})a_softmax = tf.nn.softmax(aa)b_list = index_to_list(bb)loss = tf.reduce_mean(-tf.reduce_sum(b_list*tf.log(a_softmax), axis=1))print(sess.run(loss))print(c)sess.close()
下面是執行結果:
相關推薦
tf.nn.sparse_softmax_cross_entropy_with_logits()的內部計算的理解
探索tf.nn.sparse_softmax_cross_entropy_with_logits,def sparse_softmax_cross_entropy_with_logits( _sentinel=None, # pylint: disable=inval
【TensorFlow】關於tf.nn.sparse_softmax_cross_entropy_with_logits()
tf.nn.sparse_softmax_cross_entropy_with_logits()這是一個TensorFlow中經常需要用到的函式。官方文件裡面有對它詳細的說明,傳入的logits為神經網路輸出層的輸出,shape為[batch_size,num_classes
個人總結:關於tf.nn.conv2d(卷積)與tf.nn.conv2d_transpose(反捲積)的區別
官網中對於卷積tf.nn.conv2d的描述 tf.nn.conv2d( input, filter, strides, padding, use_cudn
TensorFlow函式之tf.nn.conv2d()(附程式碼詳解)
tf.nn.conv2d是TensorFlow裡面實現卷積的函式,是搭建卷積神經網路比較核心的一個方法。 函式格式: tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu = Noen, name = Non
java基礎-printf()語句的理解
style [] cnblogs ble bsp public line 天突 ont 對print和println的理解很簡單,今天突然接觸到printf(),有點懵,整理了下也幫自己理一理 printf是格式化輸出的形式 下在舉個例子: package o
tensorflow之tf.nn.l2_normalize與l2_loss的計算
1.tf.nn.l2_normalize tf.nn.l2_normalize(x, dim, epsilon=1e-12, name=None) 上式: x為輸入的向量; dim為l2範化的維數,dim取值為0或0或1; eps
tf.layers.Dense()用法
tf.layers.Dense函式 Dense類 繼承自: Layer 定義在:tensorflow/python/layers/core.py。 密集連線(Densely-connected)層類。 該層實現了操作:outputs = activation(inputs * k
eval()函式的理解
import tensorflow as tf import numpy as np with tf.variable_scope("test1",initializer=tf.constant_initializer(0.4)): var1=tf.get_variabl
JavaScript關於exec()函式的理解
exec() 方法用於檢索字串中的正則表示式的匹配。 官方說法是這樣的,但是我剛開始查的時候看了一遍有點蒙圈。 所以重新把它翻譯成人話。 exec()作用就是在字串中 用 正則 來找 匹配的字元 返回值是一個數組 , 陣列中第一個元素是匹配到的內容,第二個是
tf.nn.sparse_softmax_cross_entropy_with_logits()函式的用法
tf.nn.sparse_softmax_cross_entropy_with_logits(_sentinel=None,labels=None,logits=None,name=None) 函式
初學者對js中sort()方法的理解。
定義和用法 sort() 方法用於對陣列的元素進行排序。 語法 arrayObject.sort(sortby) 引數 描述 sortby 可選。規定排序順序。必須是函式。 返回值 對陣列的引用。請注意,陣列在原陣列上進行排序,不生成副本。 說明 如果
tensorflow tf.nn.softmax_cross_entropy_with_logits & tf.nn.sparse_softmax_cross_entropy_with_logits
____tz_zstf.nn.sparse_softmax_cross_entropy_with_logits.sparse_softmax_cross_entropy_with_logits( _sentinel=None, labels=None,
opencv 滑鼠響應機制 onMouse()函式的理解
void onMouse(int event, int x, int y, int, void*) { if (selectObject)//只有當滑鼠左鍵按下去時才有效,然後通過if裡面程式碼就可
TensorFlow 辨異 —— tf.add(a, b) 與 a+b(tf.assign 與 =)、tf.nn.bias_add 與 tf.add(轉)
fad codes live tin csdn hat targe ops 操作 1. tf.add(a, b) 與 a+b 在神經網絡前向傳播的過程中,經常可見如下兩種形式的代碼: tf.add(tf.matmul(x, w), b) tf.matmul(x, w) +
tensorflow學習(2):計算圖,tf.get_default_graph(),tf.Graph()
一、基本概念 顧名思義,TensorFlow的名字已經出賣了它的“靈魂”,TensorFlow=tensor(張量)+flow(流動)。TensorFlow是一個通過計算圖的形式來表達計算的程式設計框架。其每一個計算都是計算圖上的一個節點,而節點之間的邊描述了計算之間的依賴關係。 計算圖
tensorflow學習(6):CNN必備函式tf.nn.conv2d和tf.nn.max_pool
一、卷積函式tf.nn.conv2d tf.nn.conv2d( input, filter, strides, padding, use_cudnn_on_gpu=None, name=None) 除去name引數用以指定該操作的name,與方法有關的一共五個引數: 第一個引數in
分貝(dB)的計算與理解
1. 基本理解 分貝(dB,decibels)表達的是功率比(power ratio,P2/P1P_2/P_1P2/P1),而不是一個amount,P2>P1P_2>P_
tensorflow學習(一)——有關tensorflow不同層的使用(tf.nn 和tf.layers以及tf.contrib.layers)的簡單區別
小trick: 對於使用tf.layers建立的神經網路,如果想要對loss函式進行正則話,可以採用如下方式[1]: 但是該方法不適用於程式設計者自己定義不同層的正則化。 l2 = tf.add_n([tf.nn.l2_loss(var) for var in tf.t
(轉載)tf.nn,tf.layers, tf.contrib概述
我們在使用tensorflow時,會發現tf.nn,tf.layers, tf.contrib模組有很多功能是重複的,尤其是卷積操作,在使用的時候,我們可以根據需要現在不同的模組。但有些時候可以一起混用。 下面是對三個模組的簡
TensorFlow 學習(七) — 常用函式 api、tf.nn、tf.keras
0. 四則運算 平方:tf.square(),開方:tf.sqrt() tf.add()、tf.sub()、tf.mul()、tf.div()、tf.mod()、tf.abs()、tf.neg()