Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 35

0
votes
answers
7 views
+10

形狀必須是1級,但是是2級tflearn錯誤

1

我正在使用由tflearn提供的DNN從一些數據中學習。我data變量的(6605, 32)的形狀和我labels數據具有(6605,),我在下面的代碼(6605, 1)重塑形狀......形狀必須是1級,但是是2級tflearn錯誤

# Target label used for training 
labels = np.array(data[label], dtype=np.float32) 

# Reshape target label from (6605,) to (6605, 1) 
labels = tf.reshape(labels, shape=[-1, 1]) 

# Data for training minus the target label. 
data = np.array(data.drop(label, axis=1), dtype=np.float32) 

# DNN 
net = tflearn.input_data(shape=[None, 32]) 
net = tflearn.fully_connected(net, 32) 
net = tflearn.fully_connected(net, 32) 
net = tflearn.fully_connected(net, 1, activation='softmax') 
net = tflearn.regression(net) 

# Define model. 
model = tflearn.DNN(net) 
model.fit(data, labels, n_epoch=10, batch_size=16, show_metric=True) 

這給了我一對夫婦的錯誤,首先是...

tensorflow.python.framework.errors_impl.InvalidArgumentError: Shape must be rank 1 but is rank 2 for 'strided_slice' (op: 'StridedSlice') with input shapes: [6605,1], [1,16], [1,16], [1].

...第二個是...

During handling of the above exception, another exception occurred:

ValueError: Shape must be rank 1 but is rank 2 for 'strided_slice' (op: 'StridedSlice') with input shapes: [6605,1], [1,16], [1,16], [1].

我不知道什麼rank 1rank 2是,所以我不知道如何解決這個問題。

+0

嘗試刪除「標籤」的整形;錯誤是否持續?它是提供一個你的數據樣本(也可以是任何提供此模型的鏈接,如你所說,將是有用的) – desertnaut

沙发
0
2

在Tensorflow中,秩是張量的維數(與矩陣秩不相似)。作爲一個例子,下面的張量具有2

t1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
print(t1.shape) # prints (3, 3) 

此外秩,以下張量具有3.

t2 = np.array([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]) 
print(t2.shape) # prints (2, 2, 3) 

由於tflearn是建立在Tensorflow的頂部,輸入不應該秩是張量。我已經修改了你的代碼,並在必要時進行了評論。

# Target label used for training 
labels = np.array(data[label], dtype=np.float32) 

# Reshape target label from (6605,) to (6605, 1) 
labels =np.reshape(labels,(-1,1)) #makesure the labels has the shape of (?,1) 

# Data for training minus the target label. 
data = np.array(data.drop(label, axis=1), dtype=np.float32) 
data = np.reshape(data,(-1,32)) #makesure the data has the shape of (?,32) 

# DNN 
net = tflearn.input_data(shape=[None, 32]) 
net = tflearn.fully_connected(net, 32) 
net = tflearn.fully_connected(net, 32) 
net = tflearn.fully_connected(net, 1, activation='softmax') 
net = tflearn.regression(net) 

# Define model. 
model = tflearn.DNN(net) 
model.fit(data, labels, n_epoch=10, batch_size=16, show_metric=True) 

希望這會有所幫助。

0
votes
answers
6 views
+10

model.compile()初始化Keras(tensorflow後端)中的所有權重和偏差嗎?

2

當我開始訓練模型時,以前沒有保存模型。我可以安全地使用model.compile()。我現在已將該模型保存在h5文件中,以便使用checkpoint進行進一步培訓。model.compile()初始化Keras(tensorflow後端)中的所有權重和偏差嗎?

說,我想進一步訓練模型。我很困惑,我可以在這裏使用model.compile()嗎?並且應該在model = load_model()聲明之前還是之後?如果model.compile()重新初始化所有的權重和偏見,我應該在model = load_model()聲明之前。

發現一些討論後,在我看來model.compile()只有當我沒有保存以前的模型時才需要。一旦我保存了模型,就不需要使用model.compile()。這是真的還是假的?當我想預測使用訓練好的模型時,我應該在預測之前使用model.compile()嗎?

沙发
0
2

何時使用?

如果你使用compile,想必一定是load_model()後。畢竟,你需要一個模型來編譯。

compile是做什麼用的?

編譯定義損失函數,所述優化度量。就這樣。

它與權重無關,您可以根據需要多次編譯模型,而不會導致任何問題進行預訓練。

您需要一個編譯模型來火車(因爲訓練使用損失函數和優化器)。但沒有必要編譯一個預測模型。

您是否需要使用多次編譯?

只有:

  • 你想改變其中的一個:
    • 損失函數
    • 優化
    • 指標
  • 您加載(或創建)一個尚未編譯的模型。或者你的加載/保存方法不考慮以前的編譯。

後果再次編譯:

如果再次編譯一個模式,你將失去優化狀態

這意味着你的訓練在開始時會受到一點影響,直到它調整了學習速率,動量等等。但是對權重絕對沒有損害(除非你的初始學習速度如此之大第一個訓練步驟會大幅改變微調的權重)。

0
votes
answers
6 views
+10

keras恢復訓練不同的學習速度

1

我建立keras簡單LSTM模型和訓練有素如下:keras恢復訓練不同的學習速度

model = Sequential() 
model.add(LSTM(activation='tanh',input_dim=6,output_dim=50,return_sequences=False)) 
model.add(Dense(output_dim=1,activation = 'sigmoid')) 
model.compile(loss='binary_crossentropy', optimizer =optimizers.Adam(lr = 0.01),metrics=['accuracy']) 
model.fit(X_train,y_train,batch_size=256,nb_epoch=1000,validation_data = (X_test,y_test)) 
model.save('model_params.h5') 

該模型幾乎收斂。因此,我想通過使用較小的學習率(即0.001)恢復訓練來微調模型。我怎麼能做到這一點?

+0

當你保存keras模型時,它也保存了優化器的狀態。只要檢查'load_model'代碼,你會發現一個解決方法 – Nain

+0

@Nain我知道。但我想改變優化器(它的學習速率)本身。我想知道是否需要重建模型並編譯模型,使用之前模型的參數來初始化它。 – MTANG

+0

你需要再次編譯它 – Nain

沙发
0
0

你只需要重新編譯模型:

model.compile(loss='binary_crossentropy', 
       optimizer= optimizers.Adam(lr=0.001),...) 

但通常Adam是一個很好的優化,並不需要這些變化。它單獨找到它的方式是很正常的。

當您使用新的優化器進行編譯時,訓練發散是非常正常的。它需要幾個時代,直到優化器自行調整。

+0

難題。謝謝。 – MTANG

+0

謝謝。但作爲新用戶,我不知道如何將其標記爲已回答。我在哪裏可以找到按鈕? – MTANG

0
votes
answers
6 views
+10

TF - 帶有地面真值盒的物體檢測

0

在我用tensorflow對目標檢測API進行一些研究的那一刻。爲此,我跟着這個教程:TF - 帶有地面真值盒的物體檢測

https://www.oreilly.com/ideas/object-detection-with-tensorflow

本教程介紹瞭如何從圖像也PASCAL VOC XML標籤文件tfrecord。以及開始使用對象檢測API。

要生成我修改了一些代碼,從引用的浣熊庫在GitHub上那些tfrecords:

https://github.com/datitran/raccoon_dataset

我標記我的圖片與LabelImg(https://github.com/tzutalin/labelImg)有你有在PASCAL VOC格式保存的可能性。

所以現在我按照教程做了60個圖像的第一次測試(訓練),一小時後(574步)我做了一箇中斷來保存檢查點。在此之後,我做了一個導出「inference.py圖」並保存了冷凍模型(糾正我,如果我說一些愚蠢的東西,這東西也是我的新東西...)

而之後,我修改了jupyter筆記本從我的慾望和tada的教程中有一些在測試圖像中的識別。

到目前爲止這麼好,但現在我想看看對象檢測有多好(爲此),爲此我想從我的測試PASCAL VOC數據集中添加一些地面實況框。但我有一些麻煩來實現我的目標。

我做的第一件事是手動添加這是我從我的VOC數據集讀取箱子,並將它們添加到圖像,我與https://matplotlib.org/devdocs/api/_as_gen/matplotlib.patches.Rectangle.html

但在我的解決方案,這是獲得不同的地塊/附圖。 ...

所以,然後我想也許對象檢測API提供了一些功能來添加盒子/地面真值盒並評估我的檢測與我的測試VOC數據集的準確性。

所以我想我看看https://github.com/tensorflow/models/tree/master/research/object_detection/utils,我以爲我找到了一個函數(DEF draw_bounding_box_on_image_array),使一些箱子到我的image_np,但沒有任何事情發生,所以這是什麼API用來做一些可視化:

vis_util.visualize_boxes_and_labels_on_image_array(
     image_np, 
     np.squeeze(boxes), 
     np.squeeze(classes).astype(np.int32), 
     np.squeeze(scores), 
     category_index, 
     use_normalized_coordinates=True, 
     line_thickness=2) 

,這是我曾嘗試使用:

vis_util.draw_bounding_box_on_image(
     image_np, 
     bndbox_coordinates[0][1], 
     bndbox_coordinates[0][0], 
     bndbox_coordinates[0][3], 
     bndbox_coordinates[0][2]) 

但有箱子的arent如果我嘗試繪圖這個numpy的陣列圖像

我錯過了什麼嗎?問題2是否有API中的某些類正在進行準確性評估?我沒有看到我的乾眼......如果此類/功能使用PASCAL VOC來確定? Mybe我可以使用這個:https://github.com/tensorflow/models/blob/master/research/object_detection/utils/object_detection_evaluation.py,但我沒有信心,因爲我也是新的python和一些代碼/評論很難讓我明白...

也許你職業的球員,有可以幫助我

在此先感謝

編輯: https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/

現在:

我從這篇文章中讀出一點點我知道我需要一個IoU(聯合交集) - 所以有人知道對象檢測API是否爲此提供了一個函數?我會重新考慮的API ...

沙发
0
0

我覺得你沒有經過完整的參數

vis_util.visualize_boxes_and_labels_on_image_array(
    image_np, 
    np.squeeze(boxes), 
    np.squeeze(classes).astype(np.int32), 
    np.squeeze(scores), 
    category_index, 
    use_normalized_coordinates=True, 
    line_thickness=2) 

你需要傳遞 image_np=ImageIDnp.squeeze(boxes)=bounding box coordinatesnp.squeeze(classes).astype(np.int32)=to which class this object belongs tonp.squeeze(scores)=confidence score that will always be 1

0
votes
answers
6 views
+10

如何減去keras中的通道平均值?

0

我已經實現了一個lambda函數來將圖像的大小從28x28x1調整爲224x224x3。我需要從所有頻道中減去VGG的平均值。當我嘗試,我得到一個錯誤如何減去keras中的通道平均值?

類型錯誤:「張量」對象不支持項目分配

def try_reshape_to_vgg(x): 
    x = K.repeat_elements(x, 3, axis=3) 
    x = K.resize_images(x, 8, 8, data_format="channels_last") 
    x[:, :, :, 0] = x[:, :, :, 0] - 103.939 
    x[:, :, :, 1] = x[:, :, :, 1] - 116.779 
    x[:, :, :, 2] = x[:, :, :, 2] - 123.68 
    return x[:, :, :, ::-1] 

有什麼推薦的解決方案做張量的元素方式減法?

+0

正如我們所知,我們可以在輸入本身中執行此操作。但是我想將它作爲Lamda圖層的一部分,以便在輸入數據增量後應用這種減法。 – user1159517

沙发
0
2

您可以在Keras 2.1.2之後在張量上使用keras.applications.imagenet_utils.preprocess_input。它會在默認模式'caffe'下減去x的VGG平均值。

from keras.applications.imagenet_utils import preprocess_input 

def try_reshape_to_vgg(x): 
    x = K.repeat_elements(x, 3, axis=3) 
    x = K.resize_images(x, 8, 8, data_format="channels_last") 
    x = preprocess_input(x) 
    return x 

如果你想留在舊版本Keras的,也許你可以檢查它是如何在Keras 2.1.2實現的,提取有用的線成try_reshape_to_vgg

def _preprocess_symbolic_input(x, data_format, mode): 
    global _IMAGENET_MEAN 

    if mode == 'tf': 
     x /= 127.5 
     x -= 1. 
     return x 

    if data_format == 'channels_first': 
     # 'RGB'->'BGR' 
     if K.ndim(x) == 3: 
      x = x[::-1, ...] 
     else: 
      x = x[:, ::-1, ...] 
    else: 
     # 'RGB'->'BGR' 
     x = x[..., ::-1] 

    if _IMAGENET_MEAN is None: 
     _IMAGENET_MEAN = K.constant(-np.array([103.939, 116.779, 123.68])) 
    # Zero-center by mean pixel 
    if K.dtype(x) != K.dtype(_IMAGENET_MEAN): 
     x = K.bias_add(x, K.cast(_IMAGENET_MEAN, K.dtype(x)), data_format) 
    else: 
     x = K.bias_add(x, _IMAGENET_MEAN, data_format) 
    return x 
+0

順便說一句,如果你使用MobileNet,你應該使用'mode ='tf''而不是減去VGG的平均值。 –

+0

https://stackoverflow.com/questions/47862788/how-to-load-mobilenet-weights-with-an-input-tensor-in-keras?noredirect=1#comment82692173_47862788 你能幫忙嗎? – user1159517

0
votes
answers
6 views
+10

整形input_data(形狀= [無,28個,28,1])至input_data(形狀= [無,28個,28])

0

我有一個變量:整形input_data(形狀= [無,28個,28,1])至input_data(形狀= [無,28個,28])

network = input_data(shape=[None, 28, 28, 1]) 

我想將其轉換爲以上形狀。我正在做tflearn.reshape的幫助,但它不能正常工作。下面是代碼「

network = tflearn.reshape(network,(-1, 28, 28)) 

我不想重新聲明它塑造[無,28,28]因爲我在它的元素。如何做到這一點任何幫助嗎?

沙发
0
0

使用tf.squeeze它從一個張量的形狀消除尺寸1的尺寸。

network = tf.squeeze(network) 
板凳
0
0

問題是出在你把形狀。它應該是[-1,28,28]格式。

所以您的代碼將成爲:

network = tflearn.reshape(network,[-1, 28, 28]) 

問候

0
votes
answers
6 views
+10

我想使用Tensorflow C++ API,但是從源代碼構建Tensorflow後,我應該如何鏈接Xcode中的庫?

0

我從github下載了tensorflow的源代碼,然後配置它並運行bazel build //tensorflow:libtensorflow_cc.so。那麼我應該如何鏈接它的頭文件或標誌。那麼我可以使用Xcode來運行我的tensorflow代碼,並且不需要每次都使用Bazel來運行我的代碼?我想使用Tensorflow C++ API,但是從源代碼構建Tensorflow後,我應該如何鏈接Xcode中的庫?

沙发
0
0

我希望你已經找到了解決方案,但如果沒有,也許這會有所幫助。

我最近使用本文中的信息:,生產所需的TensorFlow庫文件和聚集在一起所需的頭文件,以便能夠

http://tuatini.me/building-tensorflow-as-a-standalone-project/

爲了得到所有正確的先決條件模塊編譯針對TensorFlow C++ API編寫的Qt C++項目 - 無需將Bazel作爲Qt項目構建過程的一部分,而我的Qt項目源代碼與TensorFlow源代碼結構完全分離。

如果您按照該文章的說法,仍然存在缺少nsync頭文件的問題,請搜索頁面底部的註釋以瞭解從哪裏複製nsync頭文件。

0
votes
answers
6 views
+10

gcloud ML引擎設置 - 無法安裝畫中畫「壞的解釋:沒有這樣的文件或目錄」

0

我試圖設立gcloud ML引擎環境中的說明這裏MACOS和Python 2.7: https://cloud.google.com/ml-engine/docs/command-linegcloud ML引擎設置 - 無法安裝畫中畫「壞的解釋:沒有這樣的文件或目錄」

當我到步驟5-6安裝TensorFlow,我得到:

不好解釋:沒有這樣的文件或目錄

那就算我用:PIP --version

我不知道發生了什麼事。一切安裝好,但我卡在這裏。如果有人有更好的說明,請發佈。 謝謝

+0

您正在使用什麼版本的Python:

source activate tensorflow 

然後?什麼操作系統?你能夠正確運行'gcloud init'嗎? – MatthewScarpino

+0

我有MACOS和Python 2.7。是的,我能夠完成所有步驟並運行gloud init。 –

+0

您可能會安裝多個Python或pip。如果你有自制軟件,我會嘗試'brew install python','brew linkapps python',然後'brew link --overwrite python'。 – MatthewScarpino

沙发
0
0

我的python Anaconda安裝可能會導致pip錯誤。竅門是使用conda virtualenv執行aforementioned guide的步驟5-6。按照說明使用conda here進行張量流動。然後用暢達with安裝谷歌雲SDK:

conda install -c bioconda google-cloud-sdk 

之後,激活與容器:

gcloud init 
0
votes
answers
6 views
+10

Tensorflow GPU的錯誤:InvalidArgumentError:無法分配裝置操作「MATMUL」

0

我使用tensorflow網站上給出的測試代碼測試tensorflow與GPU在水蟒:Tensorflow GPU的錯誤:InvalidArgumentError:無法分配裝置操作「MATMUL」

import tensorflow as tf 
with tf.device('/device:GPU:0'): 
    a = tf.constant([1,2,3,4,5,6],shape=[2,3],name='a') 
    b = tf.constant([1,2,3,4,5,6],shape=[3,2],name='b') 
    c = tf.matmul(a,b) 
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) 
print(sess.run(c)) 

我創建蟒蛇環境使用pip install tensorflow-gpu安裝tensorflow + gpu。 IPython的筆記本電腦被用來執行上面的代碼,並不斷收到錯誤

InvalidArgumentError: Cannot assign a device for operation 'MatMul': Could not satisfy explicit device specification '/device:GPU:0' because no supported kernel for GPU devices is available. 
    [[Node: MatMul = MatMul[T=DT_INT32, transpose_a=false, transpose_b=false, _device="/device:GPU:0"](a, b)]] 

看來MatMul運營商無法在GPU上進行加載。我不知道爲什麼沒有支持GPU設備的內核,因爲正確安裝了cuda和cudNN。否則,tensorflow消息顯示gpu被識別:

name: GeForce GTX 1080 Ti 
major: 6 minor: 1 memoryClockRate (GHz) 1.683 
pciBusID 0000:02:00.0 
Total memory: 10.91GiB 
Free memory: 10.75GiB 
2017-11-17 19:12:50.212054: W tensorflow/stream_executor/cuda/cuda_driver.cc:523] A non-primary context 0x55a56f0c2420 exists before initializing the StreamExecutor. We haven't verified StreamExecutor works with that. 
2017-11-17 19:12:50.213035: I tensorflow/core/common_runtime/gpu/gpu_device.cc:955] Found device 1 with properties: 
name: GeForce GTX 1080 Ti 
major: 6 minor: 1 memoryClockRate (GHz) 1.683 
pciBusID 0000:82:00.0 
Total memory: 10.91GiB 
Free memory: 10.75GiB 
2017-11-17 19:12:50.213089: I tensorflow/core/common_runtime/gpu/gpu_device.cc:847] Peer access not supported between device ordinals 0 and 1 
2017-11-17 19:12:50.213108: I tensorflow/core/common_runtime/gpu/gpu_device.cc:847] Peer access not supported between device ordinals 1 and 0 
2017-11-17 19:12:50.213132: I tensorflow/core/common_runtime/gpu/gpu_device.cc:976] DMA: 0 1 
2017-11-17 19:12:50.213148: I tensorflow/core/common_runtime/gpu/gpu_device.cc:986] 0: Y N 
2017-11-17 19:12:50.213156: I tensorflow/core/common_runtime/gpu/gpu_device.cc:986] 1: N Y 
2017-11-17 19:12:50.213169: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:02:00.0) 
2017-11-17 19:12:50.213179: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:1) -> (device: 1, name: GeForce GTX 1080 Ti, pci bus id: 0000:82:00.0) 
Device mapping: 
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:02:00.0 
/job:localhost/replica:0/task:0/gpu:1 -> device: 1, name: GeForce GTX 1080 Ti, pci bus id: 0000:82:00.0 
2017-11-17 19:12:50.471348: I tensorflow/core/common_runtime/direct_session.cc:300] Device mapping: 
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:02:00.0 
/job:localhost/replica:0/task:0/gpu:1 -> device: 1, name: GeForce GTX 1080 Ti, pci bus id: 0000:82:00.0 

有兩個gpus,它們都遇到了同樣的問題。 cuda和cudnn庫安裝正確,環境變量設置在anaconda中。 cuda示例(deviceQuery)代碼能夠被編譯並且運行時沒有錯誤,並且顯示result = pass。否則,可以在CPU上加載Matmul並完成計算。程序中的變量ab能夠加載到GPU設備上。給予tensorflow消息:

2017-11-17 20:27:25.965655: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:02:00.0) 
2017-11-17 20:27:25.965665: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:1) -> (device: 1, name: GeForce GTX 1080 Ti, pci bus id: 0000:82:00.0) 
Device mapping: 
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:02:00.0 
/job:localhost/replica:0/task:0/gpu:1 -> device: 1, name: GeForce GTX 1080 Ti, pci bus id: 0000:82:00.0 
2017-11-17 20:27:26.228395: I tensorflow/core/common_runtime/direct_session.cc:300] Device mapping: 
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:02:00.0 
/job:localhost/replica:0/task:0/gpu:1 -> device: 1, name: GeForce GTX 1080 Ti, pci bus id: 0000:82:00.0 

MatMul: (MatMul): /job:localhost/replica:0/task:0/cpu:0 
2017-11-17 20:27:26.229489: I tensorflow/core/common_runtime/simple_placer.cc:872] MatMul: (MatMul)/job:localhost/replica:0/task:0/cpu:0 
b: (Const): /job:localhost/replica:0/task:0/gpu:0 
2017-11-17 20:27:26.229512: I tensorflow/core/common_runtime/simple_placer.cc:872] b: (Const)/job:localhost/replica:0/task:0/gpu:0 
a: (Const): /job:localhost/replica:0/task:0/gpu:0 
2017-11-17 20:27:26.229526: I tensorflow/core/common_runtime/simple_placer.cc:872] a: (Const)/job:localhost/replica:0/task:0/gpu:0 

我重新安裝了nvidia驅動,CUDA和蟒蛇幾次,但從來沒有解決這個問題。如果有任何建議,這將是非常好的。

  • OS平臺及分銷:Linux操作系統Ubuntu 16.04
  • 安裝TensorFlow:二進制
  • TensorFlow版本:1.3
  • Python版本:2.7.14
  • GCC/Compiler版本(如果從源代碼編譯):5.4.0
  • NVIDIA驅動程序:384.98
  • CUDA/cuDNN版本:CUDA 8.0/6.0 cuDNN
  • GPU型號和內存:的Geforce 1080Ti
沙发
0
0

你嘗試在GPU上使用tf.int32DT_INT32)數據類型來生成多張張數。錯誤消息是說GPU不支持乘以DT_INT32張量。

注意的是,網站上的代碼被使用浮動張量(tf.float32)(假設你在https://www.tensorflow.org/tutorials/using_gpu談論代碼)

發生變化:

a = tf.constant([1,2,3,4,5,6],shape=[2,3],name='a') 

到:

a = tf.constant([1.,2.,3.,4.,5.,6.],shape=[2,3],name='a') 

或者:

a = tf.constant([1,2,3,4,5,6],shape=[2,3],name='a',dtype=tf.float32) 

b類似,應該使錯誤消失,因爲肯定有支持GPU上float32張量矩陣乘法的內核。

希望有所幫助。

+0

很好的解釋。它已經解決了,謝謝! – Xinzhou

0
votes
answers
6 views
+10

無法爲張量「Placeholder_10:0」喂形狀的值(4),其具有形狀「(?,4)」

0

HeJ小鼠,無法爲張量「Placeholder_10:0」喂形狀的值(4),其具有形狀「(?,4)」

在我的多類神經網絡用於IRIS的最後一步

數據集,我正在執行以下代碼:

steps = 2500 

with tf.Session() as sess: 

sess.run(init) 

for i in range(steps): 

    sess.run(train,feed_dict={X_data:X_train,y_target:y_train}) 

    # PRINT OUT A MESSAGE EVERY 100 STEPS 
    if i%500 == 0: 

     print('Currently on step {}'.format(i)) 
     print('Accuracy is:') 
     # Test the Train Model 
     matches = tf.equal(tf.argmax(final_output,1),tf.argmax(y_target,1)) 

     acc = tf.reduce_mean(tf.cast(matches,tf.float32)) 

     print(sess.run(acc,feed_dict={X_data:X_test,y_target:y_test})) 
     print('
') 

correct_prediction = tf.equal(tf.argmax(final_output,1), tf.argmax(y_target,1)) 
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) 
print("Final accuracy: ", sess.run(accuracy, feed_dict={X_data: X_test, y_target: y_test})) 

我最後一步將預測手動輸入值的輸出。我嘗試這樣做:

prediction=tf.argmax(final_output,1) 
print("Predictions") 

new = [5.1,3.5,1.4,0.2] 

print(prediction.eval(feed_dict={X_data: new})) 

,但我得到以下錯誤

Cannot feed value of shape (4,) for Tensor 'Placeholder_10:0', which has shape '(?, 4)' 

我真的不知道如何與4手動輸入的會融入這個佔位符

的格式值創建一個列表
X_data = tf.placeholder(shape=[None, 4], dtype=tf.float32) 

謝謝!

沙发
0
1

列表中的簡單包裝應該工作:

prediction.eval(feed_dict={X_data: [new]}) 

或飼料一numpy的數組:

prediction.eval(feed_dict={X_data: np.reshape(new, (-1,4))}) 
+1

完美的,就像一個魅力! – Schnurrberto