টেনসরফ্লোতে কোনও টেনসর অবজেক্টের মান কীভাবে প্রিন্ট করা যায়?


258

আমি টেনসরফ্লোতে ম্যাট্রিক্স গুণনের প্রারম্ভিক উদাহরণটি ব্যবহার করছি।

matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)

আমি যখন পণ্যটি মুদ্রণ করি তখন এটি এটি কোনও Tensorবস্তু হিসাবে প্রদর্শিত হয় :

<tensorflow.python.framework.ops.Tensor object at 0x10470fcd0>

তবে আমি কীভাবে এর মান জানব product?

নিম্নলিখিত সাহায্য করে না:

print product
Tensor("MatMul:0", shape=TensorShape([Dimension(1), Dimension(1)]), dtype=float32)

আমি জানি যে গ্রাফগুলি চালু আছে Sessions, তবে কোনও Tensorগ্রাফটি এ-তে গ্রাফ না চালিয়ে কোনও আউটপুট চেক করতে পারি না session?

উত্তর:


249

কোনও অবজেক্টের আসল মানটি মূল্যায়নের সহজতম উপায় [এ] পদ্ধতিতে Tensorএটি পাস করা Session.run()বা আপনার Tensor.eval()যখন ডিফল্ট সেশন হয় (যেমন কোনও with tf.Session():ব্লকে, বা নীচে দেখুন) call সাধারণভাবে [বি] , আপনি একটি সেশনে কিছু কোড না চালিয়ে একটি সেন্সরের মান মুদ্রণ করতে পারবেন না।

আপনি যদি প্রোগ্রামিং মডেলটি নিয়ে পরীক্ষা-নিরীক্ষা করছেন, এবং টেনজারগুলি মূল্যায়নের সহজ উপায় চান tf.InteractiveSession, আপনার প্রোগ্রামের শুরুতে একটি সেশন খুলতে দেয় এবং তারপরে সমস্ত Tensor.eval()(এবং Operation.run()) কলগুলির জন্য সেই সেশনটি ব্যবহার করতে দেয় । শেল বা আইপিথন নোটবুকের মতো ইন্টারেক্টিভ সেটিং-এ এটি আরও সহজ হতে পারে, যখন কোনও জায়গার Sessionসর্বত্র অতিক্রম করা ক্লান্তিকর হয় । উদাহরণস্বরূপ, বৃহস্পতি নোটবুকে নিম্নলিখিতটি কাজ করে:

with tf.Session() as sess:  print(product.eval()) 

এটি এ জাতীয় ক্ষুদ্র প্রকাশের জন্য নির্বোধ বলে মনে হতে পারে তবে টেনসরফ্লো 1.x এর মূল ধারণাগুলির মধ্যে একটি মুলতুবি কার্যকর হয়েছে : এটি একটি বৃহত এবং জটিল এক্সপ্রেশন তৈরি করা খুব সস্তা এবং আপনি যখন এটি মূল্যায়ন করতে চান তখন (শেষ পর্যন্ত) যা আপনি ক এর সাথে সংযুক্ত হন Session) এর কার্যকরকরণ আরও দক্ষতার সাথে নির্ধারিত করতে সক্ষম হয় (যেমন সমান্তরালে স্বতন্ত্র অংশগুলি চালানো এবং জিপিইউ ব্যবহার করে)।


[এ]: টেনসরের মানটি আপনার পাইথন প্রোগ্রামে না ফিরিয়ে প্রিন্ট করতে, আপনি tf.print()অপারেটরটি ব্যবহার করতে পারেন , যেমন আন্দ্রেজেজ অন্য উত্তরে বলেছে । সরকারী ডকুমেন্টেশন অনুযায়ী:

অপারেটরটি চলমান রয়েছে তা নিশ্চিত করার জন্য, ব্যবহারকারীদের উত্পাদিত অপের tf.compat.v1.Sessionচালনার পদ্ধতিতে পাস করতে হবে , বা নির্দিষ্টকরণের মাধ্যমে ওপিকের জন্য একটি নিয়ন্ত্রণ নির্ভরতা হিসাবে বিকল্পটি ব্যবহার করতে হবে tf.compat.v1.control_dependencies([print_op]), যা স্ট্যান্ডার্ড আউটপুটে মুদ্রিত।

এটিও নোট করুন:

জুপিটার নোটবুক এবং কোলাবগুলিতে tf.printনোটবুকের সেল আউটপুটগুলিতে প্রিন্ট করে। এটি নোটবুক কার্নেলের কনসোল লগগুলিতে লিখবে না।

[বি]: আপনি পারে ব্যবহার করতে পারবেন tf.get_static_value()ফাংশন দেওয়া টেন্সর এর ধ্রুবক রয়েছে যার মান পেতে যদি এর মান দক্ষতার গণনীয় হয়।


17
সেশন.আরুন () কে কল না করেই কোনও টেন্সরের কিছু বৈশিষ্ট্য পাওয়া সম্ভব। উদাহরণস্বরূপ, আপনি tensor.get_shape () কল করতে পারেন। অনেক ক্ষেত্রে, এটি ডিবাগ করার জন্য পর্যাপ্ত তথ্য দেয়।
ইয়ান গুডফেলো

5
নীচে tf. মুদ্রণ অপশন সম্পর্কে এছাড়াও এবং এর উত্তর দেখুন। "টেনসরফ্লো প্রিন্ট" এর জন্য গুগল করার সময় আমি এই স্ট্যাকওভারফ্লো উত্তরটি সন্ধান করি এবং এই শীর্ষ উত্তরটি এটিকে শব্দ করে তোলে যে কোনও টিএফ.প্রিন্ট অপ নেই।
ইয়ান গুডফেলো

2
আমি উত্তরে কিছু সতর্কতা যুক্ত করেছি, সুতরাং এটি এখন আরও পরিষ্কার হওয়া উচিত। (আমি মনে করি না যে মূল প্রশ্নকর্তা একটি
সেন্সরটির

1
কনসোলের (টিএফ.প্রিন্টের মাধ্যমে) মুদ্রণের পরিবর্তে কোনও ফাইল সংরক্ষণের উপায় আছে কি?
থ্যাং

tf.Session()টেনসরফ্লো 2 তে কাজ করে না আপনি তার tf.compat.v1.Session()পরিবর্তে ব্যবহার করতে পারেন ।
mic

158

অন্য উত্তরগুলি সঠিক হলেও আপনি গ্রাফটি মূল্যায়ন না করা পর্যন্ত মানটি মুদ্রণ করতে পারবেন না, আপনি একবার গ্রাফিকের মূল্যায়ন করার পরে গ্রাফের অভ্যন্তরে কোনও মূল্য মুদ্রণের এক সহজ উপায় সম্পর্কে কথা বলেন না।

যখনই গ্রাফটি মূল্যায়িত হয় (ব্যবহার করা হয় ) runবা সেন্সরটির মানটি পাওয়া যায় তার সহজ উপায়টি এই উদাহরণ হিসাবে যেমন অপারেশনটি evalব্যবহার করে Print:

# Initialize session
import tensorflow as tf
sess = tf.InteractiveSession()

# Some tensor we want to print the value of
a = tf.constant([1.0, 3.0])

# Add print operation
a = tf.Print(a, [a], message="This is a: ")

# Add more elements of the graph using a
b = tf.add(a, a)

এখন, যখনই আমরা পুরো গ্রাফটি মূল্যায়ন করি, যেমন ব্যবহার করে b.eval() আমরা পাই:

I tensorflow/core/kernels/logging_ops.cc:79] This is a: [1 3]

37
এটি খুব গুরুত্বপূর্ণ যে আপনি একটি = টিএফ.প্রিন্ট থেকে একটি অন্য কিছুতে ব্যবহার করুন! tf.print (a, [a]) অন্য কিছু করবে না
Fábio Dias

5
আমরা ঠিক a.eval()তখন ব্যবহার করতে পারি !
উদয়রাজ দেশমুখ

1
@ ফ্যাবিডিয়াস কি আমি মনে করি না আমি আপনার বক্তব্য পেয়েছি? আপনি সময়
পেলে

7
দয়া করে নোট করুন যে tf.Print()হ্রাস করা হয়েছে এবং (এখন) সরানো হয়েছে। পরিবর্তে ব্যবহার tf.print()। দস্তাবেজগুলি দেখুন: tensorflow.org/api_docs/python/tf/ মুদ্রণ এবং tensorflow.org/api_docs/python/tf/print
হেফেষ্টাস

1
বাহ আমি এক বছর পরে আমার নিজের মন্তব্য দেখে অবাক হলাম @ ইউক্লি তবে এখন আমি তার বক্তব্য বুঝতে পারি না। এই পোস্টটি দেখুন , যা এখনও অবজ্ঞাত এপিআই সম্পর্কে রয়েছে তবে ধারণাগুলি সম্ভবত একই রকম।
yuqli

27

অন্যরা কী বলেছে তার পুনরাবৃত্তি, গ্রাফটি চালানো ছাড়া মানগুলি পরীক্ষা করা সম্ভব নয়।

মুদ্রণের মানগুলির জন্য একটি সহজ উদাহরণের জন্য যে কেউ চাইছেন তার জন্য একটি স্নিপেট নিম্নরূপ। আইপথন নোটবুকে কোনও পরিবর্তন ছাড়াই কোডটি কার্যকর করা যেতে পারে

import tensorflow as tf

#define a variable to hold normal random values 
normal_rv = tf.Variable( tf.truncated_normal([2,3],stddev = 0.1))

#initialize the variable
init_op = tf.initialize_all_variables()

#run the graph
with tf.Session() as sess:
    sess.run(init_op) #execute init_op
    #print the random values that we sample
    print (sess.run(normal_rv))

আউটপুট:

[[-0.16702934  0.07173464 -0.04512421]
 [-0.02265321  0.06509651 -0.01419079]]

2
শুধু এফওয়াইআই:WARNING:tensorflow:From <ipython-input-25-8583e1c5b3d6>:1: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02. Instructions for updating: Use 'tf.global_variables_initializer' instead.
মার্ক ক্র্যামার

20

না, আপনি গ্রাফ চালানো (করণ session.run()) ছাড়াই সেন্সরের সামগ্রী দেখতে পাচ্ছেন না । কেবলমাত্র আপনি দেখতে পাচ্ছেন:

  • টেনসরের মাত্রিকতা (তবে আমি ধরে নিই যে টিএফ রয়েছে যে অপারেশনগুলির তালিকার জন্য এটি গণনা করা কঠিন নয় )
  • টেনসর উত্পন্ন করতে ব্যবহৃত অপারেশনের ধরণ ( transpose_1:0, random_uniform:0)
  • টেন্সরের উপাদানগুলির ধরণ ( float32)

আমি এটি ডকুমেন্টেশনে খুঁজে পাইনি, তবে আমি বিশ্বাস করি যে ভেরিয়েবলের মানগুলি (এবং কিছু নির্ধারিত সময় নির্ধারিত সময়ে গণনা করা হয় না)।


এই উদাহরণটি একবার দেখুন:

import tensorflow as tf
from datetime import datetime
dim = 7000

প্রথম উদাহরণ যেখানে আমি সবেমাত্র এলোমেলো সংখ্যার একটি ধ্রুবক টেনসর শুরু করি প্রায় একই সময়ে অস্পষ্টভাবে নির্বিশেষে চালিত হয় ( 0:00:00.003261)

startTime = datetime.now()
m1 = tf.truncated_normal([dim, dim], mean=0.0, stddev=0.02, dtype=tf.float32, seed=1)
print datetime.now() - startTime

দ্বিতীয় ক্ষেত্রে, যেখানে ধ্রুবকটি আসলে মূল্যায়ন হয় এবং মানগুলি নির্ধারিত হয়, সময়টি স্পষ্টভাবে ম্লানির উপর নির্ভর করে ( 0:00:01.244642)

startTime = datetime.now()
m1 = tf.truncated_normal([dim, dim], mean=0.0, stddev=0.02, dtype=tf.float32, seed=1)
sess = tf.Session()
sess.run(m1)
print datetime.now() - startTime

এবং আপনি d = tf.matrix_determinant(m1)কোনও কিছু গণনা করে আরও স্পষ্ট করে তুলতে পারেন ( , সময়টি চলবে তা মনে রেখে O(dim^2.8))

পিএস আমি পেয়েছি এটি ডকুমেন্টেশনে ব্যাখ্যা করা হয়েছে :

একটি টেন্সর অবজেক্ট একটি অপারেশনের ফলাফলের প্রতীকী হ্যান্ডেল, তবে প্রকৃতপক্ষে অপারেশনের আউটপুটটির মান ধরে না।


15

আমি মনে করি আপনার কিছু মৌলিক অধিকার এখনই পাওয়া দরকার। উপরের উদাহরণগুলির সাথে আপনি টেনারগুলি তৈরি করেছেন (বহু মাত্রিক অ্যারে)। তবে টেনসর প্রবাহকে সত্যই কাজ করতে আপনাকে একটি " সেশন " শুরু করতে হবে এবং সেশনে আপনার " অপারেশন " চালাতে হবে। "সেশন" এবং "অপারেশন" শব্দটি লক্ষ্য করুন। টেনসরফ্লো নিয়ে কাজ করার জন্য আপনাকে 4 টি জিনিস জানতে হবে:

  1. tensors
  2. অপারেশনস
  3. দায়রা
  4. গ্রাফ

এখন আপনি যা লিখেছেন তা থেকে আপনি টেন্সরটি দিয়েছেন এবং অপারেশন করেছেন তবে আপনার কোনও সেশন চলছে না গ্রাফ রয়েছে। টেনসর (গ্রাফের প্রান্তগুলি) গ্রাফগুলির মধ্য দিয়ে প্রবাহিত হয় এবং ক্রিয়া (গ্রাফের নোড) দ্বারা চালিত হয় ip ডিফল্ট গ্রাফ রয়েছে তবে আপনি একটি সেশনে আপনার সূচনা করতে পারেন।

আপনি মুদ্রণ বলার সময়, আপনি কেবল পরিবর্তনশীল বা ধ্রুবকটির সংজ্ঞাটি সংজ্ঞায়িত করেন।

সুতরাং আপনি কী অনুপস্থিত তা দেখতে পারেন:

 with tf.Session() as sess:     
           print(sess.run(product))
           print (product.eval())

আশা করি এটা সাহায্য করবে!


12

ভিতরে Tensorflow 1.x

import tensorflow as tf
tf.enable_eager_execution()
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)

#print the product
print(product)         # tf.Tensor([[12.]], shape=(1, 1), dtype=float32)
print(product.numpy()) # [[12.]]

টেনসরফ্লো ২.x এর সাহায্যে উত্সাহী মোড ডিফল্টরূপে সক্ষম হয়। সুতরাং নিম্নলিখিত কোডটি TF2.0 এর সাথে কাজ করে।

import tensorflow as tf
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)

#print the product
print(product)         # tf.Tensor([[12.]], shape=(1, 1), dtype=float32)
print(product.numpy()) # [[12.]]

1
আমি টেনসরফ্লো সংস্করণ 1.13.2 ইনস্টল করেছি এবং আগ্রহী সম্পাদন সক্ষম করেছি (কাস্টম লস ফাংশনটির ভিতরে টেনসর মানটি মূল্যায়ন করার চেষ্টা করার সময় 'টেঞ্জার' অবজেক্টটির কোনও বৈশিষ্ট্য নেই 'ন্যাপি' রয়েছে) আমি সমস্যাটি সমাধানে যে কোনও সহায়তার সত্যই প্রশংসা করব।
নিকো গামুলিন

1
@ নিকোগামুলিন নিশ্চিত করুন যে আপনি আপনার স্ক্রিপ্টের শুরুতে tf.compat.v1.enable_eager_execution () রেখেছেন। আমার সংস্করণটি 1.14.0 আছে, আমি পাইকার্মে আমার স্ক্রিপ্টটি চালাচ্ছি, এবং টেনসর.নম্পি () কাজ করছে
টমাসো দি নোটো

1
@ নিকোগামুলিন সেই ত্রুটি তখনই প্রদর্শিত হবে যখন আপনি গ্রাফ মোডে কোনও সেন্সর অ্যাক্সেস করার চেষ্টা করছেন। আমি মনে করি, আগ্রহী কার্যকর হতে পারে কার্যকরভাবে কার্যকর করা যায় নি। আগ্রহী সম্পাদন পরীক্ষা করার জন্য, কেবল aa = tf.constant (2.0), b = tf.constant (3.0), মুদ্রণ (tf.add (a, b)) সংজ্ঞায়িত করুন। আপনি যদি উত্তর 5.0 হিসাবে দেখেন তবে আগ্রহী সঠিকভাবে সক্ষম হয়েছিল।
বিষ্ণুবর্ধন জনপতি

9

উপরের উত্তরের উপর ভিত্তি করে, আপনার নির্দিষ্ট কোড স্নিপেটের সাহায্যে আপনি এই জাতীয় পণ্যটি মুদ্রণ করতে পারেন:

import tensorflow as tf
#Initialize the session
sess = tf.InteractiveSession()

matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)

#print the product
print(product.eval())

#close the session to release resources
sess.close()

8

টেনসরফ্লো ২.০++ (বা ইজিার মোড পরিবেশে) আপনি .numpy()পদ্ধতিটি কল করতে পারেন :

import tensorflow as tf

matrix1 = tf.constant([[3., 3.0]])
matrix2 = tf.constant([[2.0],[2.0]])
product = tf.matmul(matrix1, matrix2)

print(product.numpy()) 

tf.print(product)পাশাপাশি আমাকে print(product.numpy())টিএফ 2.0 এর সাথে একই আউটপুট দেয় ।
HUSMEN

8

tf.keras.backend.eval ছোট এক্সপ্রেশন মূল্যায়নের জন্য দরকারী।

tf.keras.backend.eval(op)

টিএফ 1.x এবং টিএফ 2.0 সামঞ্জস্যপূর্ণ।


ন্যূনতম যাচাইযোগ্য উদাহরণ

from tensorflow.keras.backend import eval

m1 = tf.constant([[3., 3.]])
m2 = tf.constant([[2.],[2.]])

eval(tf.matmul(m1, m2))
# array([[12.]], dtype=float32)

এটি দরকারী কারণ আপনার স্পষ্টভাবে একটি Sessionবা তৈরি করতে হবে না InteractiveSession


7

আপনি অধিবেশনকে কার্যকর করে সেশনটিতে গ্রাফ না চালিয়ে কোনও টেনসরঅবজেক্টের আউটপুট চেক করতে পারেন

কেবল কোডের নিম্নলিখিত দুটি লাইন যুক্ত করুন: import tensorflow.contrib.eager as tfe tfe.enable_eager_execution()

ঠিক তোমার পরে import tensorflow

এর আউটপুট print productআপনার উদাহরণের এখন হবে: tf.Tensor([[ 12.]], shape=(1, 1), dtype=float32)

দ্রষ্টব্য যে এখন অবধি (নভেম্বর 2017) আপনাকে আগ্রহী সম্পাদন সক্ষম করার জন্য একটি রাত্রে বিল্ড স্থাপন করতে হবে। প্রাক-নির্মিত চাকা এখানে পাওয়া যাবে


5

অনুগ্রহ করে নোট করুন যে tf.Print()নামটি পরিবর্তন করবে। আপনি যে টেন্সরটি মুদ্রণ করতে চান সেটি যদি স্থানধারক হয় তবে এটিকে খাওয়ানো ডেটা ব্যর্থ হবে কারণ খাওয়ানোর সময় আসল নামটি পাওয়া যাবে না। উদাহরণ স্বরূপ:

import tensorflow as tf
tens = tf.placeholder(tf.float32,[None,2],name="placeholder")
print(eval("tens"))
tens = tf.Print(tens,[tens, tf.shape(tens)],summarize=10,message="tens:")
print(eval("tens"))
res = tens + tens
sess = tf.Session()
sess.run(tf.global_variables_initializer())

print(sess.run(res))

আউটপুট হল:

python test.py
Tensor("placeholder:0", shape=(?, 2), dtype=float32)
Tensor("Print:0", shape=(?, 2), dtype=float32)
Traceback (most recent call last):
[...]
InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'placeholder' with dtype float

5

আপনার দুটি টেক্সট বিভাগের সমন্বয়ে টেনসরফ্লো কোর প্রোগ্রামগুলি ভাবা উচিত:

  • গণনামূলক গ্রাফ তৈরি করা।
  • গণনামূলক গ্রাফ চলছে।

সুতরাং নীচের কোডের জন্য আপনি কেবল গণনামূলক গ্রাফ তৈরি করুন।

matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)

টেনসরফ্লো প্রোগ্রামের সমস্ত ভেরিয়েবলগুলি সূচনা করার জন্য আপনাকে অবশ্যই স্পষ্টভাবে একটি বিশেষ ক্রিয়াকলাপ কল করতে হবে:

init = tf.global_variables_initializer()

এখন আপনি গ্রাফটি তৈরি করেন এবং সমস্ত ভেরিয়েবল সূচনা করেন, পরবর্তী পদক্ষেপটি নোডগুলি মূল্যায়ন করা, আপনাকে অবশ্যই একটি সেশনের মধ্যে গণনা গ্রাফ চালাতে হবে। একটি অধিবেশন টেনসরফ্লো রানটাইমের নিয়ন্ত্রণ এবং স্থিতিকে আবদ্ধ করে।

নিম্নলিখিত কোডটি একটি সেশন অবজেক্ট তৈরি করে এবং তারপরে গণনার গ্রাফের মূল্যায়নের জন্য পর্যাপ্ত পরিমাণে চালানোর জন্য এটির রান পদ্ধতিটি আহ্বান করে product:

sess = tf.Session()
// run variables initializer
sess.run(init)

print(sess.run([product]))

4

আপনি কেরাস ব্যবহার করতে পারেন, এক-লাইনের উত্তরটি evalএরূপ পদ্ধতি ব্যবহার করা হবে :

import keras.backend as K
print(K.eval(your_tensor))

3

এই সহজ কোড ব্যবহার করে দেখুন! (এটি স্ব-বর্ণনামূলক)

import tensorflow as tf
sess = tf.InteractiveSession() # see the answers above :)
x = [[1.,2.,1.],[1.,1.,1.]]    # a 2D matrix as input to softmax
y = tf.nn.softmax(x)           # this is the softmax function
                               # you can have anything you like here
u = y.eval()
print(u)

2

আমি এটি সম্পাদন না করা পর্যন্ত সমস্ত উত্তর পড়ার পরেও কী প্রয়োজন তা বুঝতে সহজ হয় নি। টেনসফ্লো আমার কাছেও নতুন।

def printtest():
x = tf.constant([1.0, 3.0])
x = tf.Print(x,[x],message="Test")
init = (tf.global_variables_initializer(), tf.local_variables_initializer())
b = tf.add(x, x)
with tf.Session() as sess:
    sess.run(init)
    print(sess.run(b))
    sess.close()

তবে তবুও আপনার সেশনটি চালিয়ে মূল্য ফেরতের প্রয়োজন হতে পারে।

def printtest():
    x = tf.constant([100.0])
    x = tf.Print(x,[x],message="Test")
    init = (tf.global_variables_initializer(), tf.local_variables_initializer())
    b = tf.add(x, x)
    with tf.Session() as sess:
        sess.run(init)
        c = sess.run(b)
        print(c)
        sess.close()

1

মূলত, আপনি যখন সেন্সরফ্লোতে কোনও ধরণের টেনসর তৈরি করেন সেগুলি সেগুলি তৈরি করা হয় এবং সেগুলির ভিতরে সঞ্চিত থাকে যা আপনি যখন টেনসরফ্লো সেশন চালাবেন কেবল তখনই অ্যাক্সেস করা যায়। আপনি একটি ধ্রুবক টেন্সর তৈরি করেছেন বলুন
c = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
একটি সেশন চলমান ছাড়া, আপনি পেতে পারেন
- op: একটি অপারেশন। অপারেশন যা এই টেনসরটি গণনা করে।
- value_index: একটি int। অপারেশনটির শেষ পয়েন্টের সূচক যা এই টেনসরটি তৈরি করে।
- dtype: একটি টাইপ এই টেনসারে সংরক্ষিত উপাদানগুলির ধরণ।

মানগুলি পেতে আপনি যে টেন্সরটি প্রয়োজন তা দিয়ে একটি অধিবেশন চালাতে পারেন:

with tf.Session() as sess:
    print(sess.run(c))
    sess.close()

আউটপুটটি এরকম কিছু হবে:

অ্যারে ([[1।, 2., 3.], [4., 5., 6.]], টাইপ = ফ্লোট 32)


1

সংস্করণ 1.10 এর পরে টেনসরফ্লোতে প্রবর্তিত আগ্রহী সম্পাদন সক্ষম করুন। এটি ব্যবহার করা খুব সহজ।

# Initialize session
import tensorflow as tf
tf.enable_eager_execution()


# Some tensor we want to print the value of
a = tf.constant([1.0, 3.0])

print(a)

1

Https://www.tensorflow.org/api_docs/python/tf/print এ প্রদত্ত টিপস ব্যবহার করে আমি log_dফর্ম্যাট করা স্ট্রিংগুলি মুদ্রণের জন্য ফাংশনটি ব্যবহার করি ।

import tensorflow as tf

def log_d(fmt, *args):
    op = tf.py_func(func=lambda fmt_, *args_: print(fmt%(*args_,)),
                    inp=[fmt]+[*args], Tout=[])
    return tf.control_dependencies([op])


# actual code starts now...

matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)

with log_d('MAT1: %s, MAT2: %s', matrix1, matrix2): # this will print the log line
    product = tf.matmul(matrix1, matrix2)

with tf.Session() as sess:
    sess.run(product)

0
import tensorflow as tf
sess = tf.InteractiveSession()
x = [[1.,2.,1.],[1.,1.,1.]]    
y = tf.nn.softmax(x)           

matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)

print(product.eval())
tf.reset_default_graph()
sess.close()

0

tf. মুদ্রণ এখন অবচয় করা হয়েছে, পরিবর্তে tf.print (ছোট হাতের পি) কীভাবে ব্যবহার করবেন তা এখানে।

একটি অধিবেশন চালানোর সময় একটি ভাল বিকল্প, এটি সর্বদা যাওয়ার উপায় নয়। উদাহরণস্বরূপ, আপনি একটি নির্দিষ্ট সেশনে কিছু টেনসর মুদ্রণ করতে চাইতে পারেন।

নতুন মুদ্রণ পদ্ধতিটি একটি মুদ্রণ অপারেশন প্রদান করে যার কোনও আউটপুট টেনার নেই:

print_op = tf.print(tensor_to_print)

যেহেতু এর কোনও আউটপুট নেই, আপনি tf. মুদ্রণের সাহায্যে গ্রাফের মতো একইভাবে সন্নিবেশ করতে পারবেন না। পরিবর্তে, আপনি এটি মুদ্রণ করতে আপনার সেশনে নির্ভরতা নিয়ন্ত্রণ করতে এটি যুক্ত করতে পারেন।

sess = tf.compat.v1.Session()
with sess.as_default():
  tensor_to_print = tf.range(10)
  print_op = tf.print(tensor_to_print)
with tf.control_dependencies([print_op]):
  tripled_tensor = tensor_to_print * 3
sess.run(tripled_tensor)

কখনও কখনও, বৃহত্তর গ্রাফে, সম্ভবত আংশিকভাবে সাব-ফাংশনগুলিতে তৈরি করা হয়, সেশন কলে প্রিন্ট_পোকে প্রচার করা জটিল c তারপরে, tf.tuple মুদ্রণ অপারেশনটিকে অন্য ক্রিয়াকলাপের সাথে জুড়তে ব্যবহার করা যেতে পারে, যা পরে সেই ক্রিয়াকলাপটি চালাবে যা কোনও সেশন কোডটি কার্যকর করে। এটি কীভাবে করা হয় তা এখানে:

print_op = tf.print(tensor_to_print)
some_tensor_list = tf.tuple([some_tensor], control_inputs=[print_op])
# Use some_tensor_list[0] instead of any_tensor below.

-1

প্রশ্ন: টেনসরফ্লোতে কোনও টেনসর অবজেক্টের মান কীভাবে প্রিন্ট করা যায়?

উত্তর:

import tensorflow as tf

# Variable
x = tf.Variable([[1,2,3]])

# initialize
init = (tf.global_variables_initializer(), tf.local_variables_initializer())

# Create a session
sess = tf.Session()

# run the session
sess.run(init)

# print the value
sess.run(x)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.