×
1 Choose EITC/EITCA Certificates
2 Learn and take online exams
3 Get your IT skills certified

Confirm your IT skills and competencies under the European IT Certification framework from anywhere in the world fully online.

EITCA Academy

Digital skills attestation standard by the European IT Certification Institute aiming to support Digital Society development

LOG IN TO YOUR ACCOUNT

CREATE AN ACCOUNT FORGOT YOUR PASSWORD?

FORGOT YOUR PASSWORD?

AAH, WAIT, I REMEMBER NOW!

CREATE AN ACCOUNT

ALREADY HAVE AN ACCOUNT?
EUROPEAN INFORMATION TECHNOLOGIES CERTIFICATION ACADEMY - ATTESTING YOUR PROFESSIONAL DIGITAL SKILLS
  • SIGN UP
  • LOGIN
  • INFO

EITCA Academy

EITCA Academy

The European Information Technologies Certification Institute - EITCI ASBL

Certification Provider

EITCI Institute ASBL

Brussels, European Union

Governing European IT Certification (EITC) framework in support of the IT professionalism and Digital Society

  • CERTIFICATES
    • EITCA ACADEMIES
      • EITCA ACADEMIES CATALOGUE<
      • EITCA/CG COMPUTER GRAPHICS
      • EITCA/IS INFORMATION SECURITY
      • EITCA/BI BUSINESS INFORMATION
      • EITCA/KC KEY COMPETENCIES
      • EITCA/EG E-GOVERNMENT
      • EITCA/WD WEB DEVELOPMENT
      • EITCA/AI ARTIFICIAL INTELLIGENCE
    • EITC CERTIFICATES
      • EITC CERTIFICATES CATALOGUE<
      • COMPUTER GRAPHICS CERTIFICATES
      • WEB DESIGN CERTIFICATES
      • 3D DESIGN CERTIFICATES
      • OFFICE IT CERTIFICATES
      • BITCOIN BLOCKCHAIN CERTIFICATE
      • WORDPRESS CERTIFICATE
      • CLOUD PLATFORM CERTIFICATENEW
    • EITC CERTIFICATES
      • INTERNET CERTIFICATES
      • CRYPTOGRAPHY CERTIFICATES
      • BUSINESS IT CERTIFICATES
      • TELEWORK CERTIFICATES
      • PROGRAMMING CERTIFICATES
      • DIGITAL PORTRAIT CERTIFICATE
      • WEB DEVELOPMENT CERTIFICATES
      • DEEP LEARNING CERTIFICATESNEW
    • CERTIFICATES FOR
      • EU PUBLIC ADMINISTRATION
      • TEACHERS AND EDUCATORS
      • IT SECURITY PROFESSIONALS
      • GRAPHICS DESIGNERS & ARTISTS
      • BUSINESSMEN AND MANAGERS
      • BLOCKCHAIN DEVELOPERS
      • WEB DEVELOPERS
      • CLOUD AI EXPERTSNEW
  • FEATURED
  • SUBSIDY
  • HOW IT WORKS
  •   IT ID
  • ABOUT
  • CONTACT
  • MY ORDER
    Your current order is empty.
EITCIINSTITUTE
CERTIFIED

What is the difference between tf.Print (capitalized) and tf.print and which function should be currently used for printing in TensorFlow?

by EITCA Academy / Tuesday, 07 October 2025 / Published in Artificial Intelligence, EITC/AI/GCML Google Cloud Machine Learning, Google tools for Machine Learning, Printing statements in TensorFlow

The distinction between `tf.Print` and `tf.print` in TensorFlow is a common source of confusion, particularly for individuals transitioning from TensorFlow 1.x to TensorFlow 2.x, or those referencing legacy code and documentation. Each function serves the purpose of printing information during TensorFlow program execution, but they differ significantly in their implementation, usage context, capabilities, and recommended use in modern TensorFlow workflows.

1. Historical Context and TensorFlow Evolution

TensorFlow underwent a substantial shift from version 1.x to 2.x. TensorFlow 1.x relied heavily on static computation graphs: operations were added to a graph, and then executed within a session using `tf.Session.run()`. To facilitate debugging and introspection within this paradigm, TensorFlow provided special graph operations, among which `tf.Print` was prominent.

With the advent of TensorFlow 2.x, the focus shifted to eager execution by default. In eager execution, operations are computed immediately as Python statements are executed (imperative style), aligning TensorFlow's usability more closely with standard Python programming. This shift rendered many graph-specific constructs and debugging utilities, including `tf.Print`, obsolete or at least unnecessary for most use cases.

2. Detailed Analysis of `tf.Print`

`tf.Print` is a TensorFlow operation available in TensorFlow 1.x, designed specifically for use within the context of static computation graphs. It is not a simple Python print function; rather, it constructs a new node in the computation graph that, when the graph is executed within a session, outputs the values of specified tensors to standard output.

Syntax and Usage:

python
tf.Print(input, data, message=None, first_n=None, summarize=None, name=None)

– input: The tensor to pass through unchanged.
– data: List of tensors whose values are to be printed.
– message: Optional string to prefix the printouts.
– first_n: Only log `first_n` number of times; defaults to unlimited.
– summarize: Only print the first `summarize` elements of each tensor.
– name: Optional name for the operation.

Example of `tf.Print` in TensorFlow 1.x:

python
import tensorflow as tf

a = tf.constant([1, 2, 3])
b = tf.constant([4, 5, 6])
c = tf.add(a, b)

# Insert a Print operation into the graph.
c = tf.Print(c, [c], message="Sum: ")

with tf.Session() as sess:
    sess.run(c)
# Output: Sum: [5 7 9]

Operational Characteristics:
– `tf.Print` is not a side-effecting Python function; it is a TensorFlow operation added to the graph.
– It returns a tensor with the same value and shape as its input, allowing it to be inserted seamlessly into a computation chain.
– The actual print occurs only when the graph is executed within a session and the `tf.Print` operation is run as part of the computation.
– If the output of `tf.Print` is not used in the computation graph, the operation may not be executed, and nothing will be printed.
– It is not compatible with eager execution, as it is a graph operation.

Deprecation and Compatibility:
– `tf.Print` was deprecated in TensorFlow 2.x and is not supported in eager mode.
– It is only available under `tf.compat.v1.Print` for backward compatibility with legacy code.
– Attempting to use `tf.Print` or `tf.compat.v1.Print` in eager execution mode results in errors or no output.

3. Detailed Analysis of `tf.print`

`tf.print` is a function introduced in TensorFlow 1.14 and intended for use in both TensorFlow 1.x (with eager execution enabled) and TensorFlow 2.x. It is designed to behave similarly to Python's built-in `print` function but with additional support for TensorFlow tensors.

Syntax and Usage:

python
tf.print(*args, sep=' ', end='\n', file=sys.stdout, summarize=-1, output_stream=None)

– args: Values to print. Can be Python objects or TensorFlow tensors.
– sep: String inserted between values, default is a space.
– end: String appended after the last value, default is a newline.
– file: File-like object. Default is `sys.stdout`.
– summarize: Number of elements to print per tensor.
– output_stream: Possible alternative output streams.

Example of `tf.print` in TensorFlow 2.x (Eager Execution):

python
import tensorflow as tf

a = tf.constant([1, 2, 3])
b = tf.constant([4, 5, 6])
c = tf.add(a, b)

tf.print("Sum:", c)
# Output: Sum: [5 7 9]

Operational Characteristics:
– `tf.print` is a Python function that prints directly to standard output, similar to the built-in `print`.
– It works natively with both Python scalars and TensorFlow tensors.
– It is fully compatible with eager execution, which is the default mode in TensorFlow 2.x.
– Unlike `tf.Print`, `tf.print` executes immediately and is not part of a computation graph.
– It can be used in any Python code, including inside functions, loops, and TensorFlow models.

Advanced Usage with Graphs:
While `tf.print` is primarily intended for eager execution, it can also be used inside TensorFlow functions decorated with `@tf.function`. In such cases, it creates a side-effecting operation that will print during graph execution. This makes `tf.print` versatile for both eager and graph modes.

Example inside a `tf.function`:

python
@tf.function
def add_and_print(x, y):
    z = x + y
    tf.print("Inside tf.function: z =", z)
    return z

a = tf.constant([2, 3])
b = tf.constant([5, 7])
add_and_print(a, b)
# Output: Inside tf.function: z = [7 10]

4. Feature Comparison Table

Feature `tf.Print` (Graph Op) `tf.print` (Function)
Availability TF 1.x (graph mode only) TF 1.14+, TF 2.x (all modes)
Execution Context Only within session/run Eager and graph mode
Output Timing When op is executed in graph Immediate (eager); as side-effect in graph
Use with `@tf.function` Not recommended Fully supported
Print Destination Stdout Stdout, customizable via `file` parameter
Output Control `first_n`, `summarize` `summarize`, `sep`, `end`, etc.
Return Value Tensor (pass-through) None (side-effect)
Current Status Deprecated Recommended

5. Practical Recommendations and Migration

For all current and future TensorFlow development, the use of `tf.print` is strongly recommended. `tf.print` is the only print utility supported in TensorFlow 2.x, compatible with both eager execution and graph execution via `@tf.function`. It is simpler to use, aligns with standard Python practices, and provides greater flexibility for output formatting.

Legacy code that uses `tf.Print` should be migrated to `tf.print` to ensure compatibility with TensorFlow 2.x and future releases. Migration typically involves replacing graph-inserting `tf.Print` operations with direct calls to `tf.print`, and possibly re-structuring code to use eager execution or `@tf.function` as appropriate.

Example Migration:

*TensorFlow 1.x with `tf.Print`:*

python
x = tf.constant([1, 2, 3])
y = tf.multiply(x, 2)
y = tf.Print(y, [y], "Doubled: ")

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

*Modern TensorFlow 2.x with `tf.print`:*

python
import tensorflow as tf

x = tf.constant([1, 2, 3])
y = tf.multiply(x, 2)
tf.print("Doubled:", y)

Alternatively, if used inside a computational function:

python
@tf.function
def double_and_print(x):
    y = x * 2
    tf.print("Doubled:", y)
    return y

x = tf.constant([1, 2, 3])
double_and_print(x)

6. Output Control and Formatting in `tf.print`

`tf.print` provides formatting options similar to Python's built-in `print` function, including the ability to specify the separator (`sep`), end character (`end`), and the output file (`file`). It also includes the `summarize` parameter to limit the number of elements printed per tensor, which is helpful when printing large tensors.

Example: Customizing Output

python
a = tf.range(20)
tf.print("Tensor:", a, summarize=5)
# Output: Tensor: [0 1 2 3 4 ... 15 16 17 18 19]

This prints only the first and last five elements of the tensor, summarizing the output and keeping it concise.

7. Use Cases and Best Practices

– Debugging: `tf.print` is the preferred tool for inspecting tensor values during model development and debugging. It integrates seamlessly with TensorFlow's computation model, regardless of execution context.
– Monitoring in Graph Execution: When used inside `@tf.function`, `tf.print` offers a mechanism to monitor intermediate values during model execution in graph mode.
– Logging: For more sophisticated logging or integration with logging frameworks, prefer Python's `logging` module, potentially combining it with `tf.print` for tensor output.

8. Error Handling and Common Pitfalls

– Attempting to use `tf.Print` in eager execution results in no output or errors, as it is not compatible with this mode.
– Not using the output of `tf.Print` in a computation graph can cause the print operation to be pruned, resulting in no print output.
– `tf.print` always executes as a side effect, but its output may be delayed or batch-printed if run inside certain TensorFlow distributed or multi-threaded contexts.

9. Advanced Integration and Custom Output

The `file` parameter in `tf.print` allows redirecting output to files or other file-like objects. This can be utilized to log outputs to files for further analysis.

Example:

python
with open("output.log", "w") as f:
    tf.print("Logging to file", file=f)

10. Summary Paragraph

The migration from `tf.Print` to `tf.print` reflects TensorFlow's evolution towards a more Pythonic and user-friendly interface, emphasizing immediate execution and streamlined debugging. Modern TensorFlow programming should exclusively utilize `tf.print` for printing tensor values, both in eager and graph execution contexts. Legacy constructs like `tf.Print` are retained solely for backward compatibility, and their use should be phased out in favor of the more versatile and effective `tf.print` function.

Other recent questions and answers regarding Printing statements in TensorFlow:

  • In real life, should we learn or implement Google Cloud tools as a machine learning engineer? What about Azure Cloud Machine Learning or AWS Cloud Machine Learning roles? Are they the same or different from each other?
  • What is the difference between Google Cloud Machine Learning and machine learning itself or a non-vendor platform?
  • How does one set limits on the amount of data being passed into tf.Print to avoid generating excessively long log files?
  • Why sessions have been removed from the TensorFlow 2.0 in favour of eager execution?
  • What is one common use case for tf.Print in TensorFlow?
  • How can multiple nodes be printed using tf.Print in TensorFlow?
  • What happens if there is a dangling print node in the graph in TensorFlow?
  • What is the purpose of assigning the output of the print call to a variable in TensorFlow?
  • How does TensorFlow's print statement differ from typical print statements in Python?

More questions and answers:

  • Field: Artificial Intelligence
  • Programme: EITC/AI/GCML Google Cloud Machine Learning (go to the certification programme)
  • Lesson: Google tools for Machine Learning (go to related lesson)
  • Topic: Printing statements in TensorFlow (go to related topic)
Tagged under: Artificial Intelligence, Debugging, Eager Execution, Migration, TensorFlow, Tf.function
Home » Artificial Intelligence » EITC/AI/GCML Google Cloud Machine Learning » Google tools for Machine Learning » Printing statements in TensorFlow » » What is the difference between tf.Print (capitalized) and tf.print and which function should be currently used for printing in TensorFlow?

Certification Center

USER MENU

  • My Account

CERTIFICATE CATEGORY

  • EITC Certification (105)
  • EITCA Certification (9)

What are you looking for?

  • Introduction
  • How it works?
  • EITCA Academies
  • EITCI DSJC Subsidy
  • Full EITC catalogue
  • Your order
  • Featured
  •   IT ID
  • EITCA reviews (Medium publ.)
  • About
  • Contact

EITCA Academy is a part of the European IT Certification framework

The European IT Certification framework has been established in 2008 as a Europe based and vendor independent standard in widely accessible online certification of digital skills and competencies in many areas of professional digital specializations. The EITC framework is governed by the European IT Certification Institute (EITCI), a non-profit certification authority supporting information society growth and bridging the digital skills gap in the EU.
Eligibility for EITCA Academy 90% EITCI DSJC Subsidy support
90% of EITCA Academy fees subsidized in enrolment

    EITCA Academy Secretary Office

    European IT Certification Institute ASBL
    Brussels, Belgium, European Union

    EITC / EITCA Certification Framework Operator
    Governing European IT Certification Standard
    Access contact form or call +32 25887351

    Follow EITCI on X
    Visit EITCA Academy on Facebook
    Engage with EITCA Academy on LinkedIn
    Check out EITCI and EITCA videos on YouTube

    Funded by the European Union

    Funded by the European Regional Development Fund (ERDF) and the European Social Fund (ESF) in series of projects since 2007, currently governed by the European IT Certification Institute (EITCI) since 2008

    Information Security Policy | DSRRM and GDPR Policy | Data Protection Policy | Record of Processing Activities | HSE Policy | Anti-Corruption Policy | Modern Slavery Policy

    Automatically translate to your language

    Terms and Conditions | Privacy Policy
    EITCA Academy
    • EITCA Academy on social media
    EITCA Academy


    © 2008-2026  European IT Certification Institute
    Brussels, Belgium, European Union

    TOP
    CHAT WITH SUPPORT
    Do you have any questions?
    We will reply here and by email. Your conversation is tracked with a support token.