Tensorflow 2.0 - AttributeError: mô-đun 'tensorflow' không có thuộc tính 'Phiên'


118

Khi tôi đang thực hiện lệnh sess = tf.Session()trong môi trường Tensorflow 2.0, tôi nhận được thông báo lỗi như sau:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'tensorflow' has no attribute 'Session'

Thông tin hệ thống:

  • Nền tảng và phân phối hệ điều hành: Windows 10
  • Phiên bản Python: 3.7.1
  • Phiên bản Tensorflow: 2.0.0-alpha0 (cài đặt bằng pip)

Các bước tái tạo:

Cài đặt:

  1. pip cài đặt - nâng cấp pip
  2. pip cài đặt tensorflow == 2.0.0-alpha0
  3. pip cài đặt keras
  4. pip cài đặt numpy == 1.16.2

Chấp hành:

  1. Thực hiện lệnh: nhập tensorflow dưới dạng tf
  2. Thực hiện lệnh: sess = tf.Session ()

Kỳ dị. Mình nghĩ không phải do bản TF mà do cài TF hoàn chỉnh bị hỏng. Xem github.com/tensorflow/tensorflow/issues/…
Dmytro Prylipko

5
TensorFlow 2.0 hoạt động xung quanh các chức năng, không phải phiên . Tôi nghĩ rằng ý tưởng ban đầu tf.Sessionít nhất là giữ lại ban đầu, nhưng nhìn vào các tài liệu thì có vẻ như nó cuối cùng đã bị loại bỏ hoàn toàn.
jdehesa

4
Ồ có vẻ như bạn vẫn có thể truy cập nó thông qua tf.compat.v1.Session.
jdehesa

@DmytroPrylipko Tôi đã thử trước khi tạo câu hỏi này. Nó không làm việc cho tôi.
Atul Kamble

Câu trả lời:


204

Theo TF 1:1 Symbols Map, trong TF 2.0, bạn nên sử dụng tf.compat.v1.Session()thay vìtf.Session()

https://docs.google.com/spreadsheets/d/1FLFJLzg7WNP6JHODX5q8BDgptKafq_slHpnHVbJIteQ/edit#gid=0

Để có được hành vi tương tự TF 1.x trong TF 2.0, người ta có thể chạy

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

nhưng sau đó người ta không thể hưởng lợi từ nhiều cải tiến được thực hiện trong TF 2.0. Để biết thêm chi tiết, vui lòng tham khảo hướng dẫn di chuyển https://www.tensorflow.org/guide/migrate


5
Việc sử dụng import tensorflow.compat.v1 as tf tf.disable_v2_behavior() mang lại cho tôi một lỗiAttributeError: module 'tensorflow_core.compat.v1' has no attribute 'contrib'
GAURAV SRIVASTAVA

1
Tìm thấy điều này trong tài liệu di chuyển TF 2.0It is still possible to run 1.X code, unmodified (except for contrib), in TensorFlow 2.0
GAURAV SRIVASTAVA

Bạn đang sử dụng phiên bản TF nào khi tensorflow_coregặp lỗi không có thuộc tính?
MPękalski

Tôi đã tải xuống một vài sổ ghi chép và tôi gặp phải những vấn đề này nhờ nhập các câu lệnh ở trên cùng như đã đề cập trong câu trả lời đã giúp tôi thoát khỏi lỗi khó chịu.
silentsudo

Làm cách nào để đánh giá .pbbiểu đồ tĩnh trong TF2 sau đó? Chỉ thông qua việc sử dụng tf1-tính năng như thế nào tf.compat.v1.Session(). Trong TF2, bạn phải sử dụng chế độ háo hức luôn luôn và không .pb?
Arty

48

TF2 chạy Thực thi háo hức theo mặc định, do đó loại bỏ nhu cầu về Phiên. Nếu bạn muốn chạy đồ thị tĩnh, cách thích hợp hơn là sử dụng tf.function()trong TF2. Mặc dù vẫn có thể truy cập Session tf.compat.v1.Session()trong TF2, nhưng tôi không khuyến khích sử dụng nó. Có thể hữu ích khi chứng minh sự khác biệt này bằng cách so sánh sự khác biệt trong các thế giới hello:

TF1.x xin chào thế giới:

import tensorflow as tf
msg = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(msg))

TF2.x xin chào thế giới:

import tensorflow as tf
msg = tf.constant('Hello, TensorFlow!')
tf.print(msg)

Để biết thêm thông tin, hãy xem Hiệu quả TensorFlow 2


1
Có chế độ không háo hức trong TF2 không? Hay chế độ háo hức chỉ là chế độ thực hiện được đề xuất? Điều gì xảy ra nếu tôi muốn có .pbtệp tĩnh trong TF2? Có khả thi không? Làm thế nào để tôi đánh giá nó sau đó trong TF2?
Arty

27

Tôi đã gặp phải sự cố này khi lần đầu tiên dùng thử python sau khi cài đặt windows10 + python3.7(64bit) + anacconda3 + jupyter notebook.

Tôi đã giải quyết vấn đề này bằng cách tham khảo " https://vispud.blogspot.com/2019/05/tensorflow200a0-attributeerror-module.html "

Tôi đồng ý với

Tôi tin rằng "Phiên ()" đã bị xóa với TF 2.0.

Tôi đã chèn hai dòng. Một là tf.compat.v1.disable_eager_execution()và khác làsess = tf.compat.v1.Session()

Hello.py của tôi như sau:

import tensorflow as tf

tf.compat.v1.disable_eager_execution()

hello = tf.constant('Hello, TensorFlow!')

sess = tf.compat.v1.Session()

print(sess.run(hello))

1
Tôi muốn nói rằng trong TF 2.0 Session()đã được di chuyển không bị loại bỏ. Các nhu cầu sử dụng Session() đã được gỡ bỏ.
MPękalski

3

Đối với TF2.x, bạn có thể làm như thế này.

import tensorflow as tf
with tf.compat.v1.Session() as sess:
    hello = tf.constant('hello world')
    print(sess.run(hello))

>>> b'hello world


3

thử đi

import tensorflow as tf

tf.compat.v1.disable_eager_execution()

hello = tf.constant('Hello, TensorFlow!')

sess = tf.compat.v1.Session()

print(sess.run(hello))

Vui lòng không đăng một mã đơn giản làm câu trả lời. Vui lòng giải thích cách triển khai / câu trả lời của bạn.
milanbalazs

2

Nếu đây là mã của bạn, giải pháp chính xác là viết lại nó để không sử dụng Session(), vì điều đó không còn cần thiết trong TensorFlow 2

Nếu đây chỉ là mã bạn đang chạy, bạn có thể hạ cấp xuống TensorFlow 1 bằng cách chạy

pip3 install --upgrade --force-reinstall tensorflow-gpu==1.15.0 

(hoặc bất kỳ phiên bản mới nhất của TensorFlow 1 là gì)


Sau khi 1.15.xkhông có 1.xphiên bản TF khác, trừ khi một số bản vá lỗi sẽ đến, nhưng không có cải tiến.
MPękalski

0

Sử dụng Anaconda + Spyder (Python 3.7)

[mã]

import tensorflow as tf
valor1 = tf.constant(2)
valor2 = tf.constant(3)
type(valor1)
print(valor1)
soma=valor1+valor2
type(soma)
print(soma)
sess = tf.compat.v1.Session()
with sess:
    print(sess.run(soma))

[bảng điều khiển]

import tensorflow as tf
valor1 = tf.constant(2)
valor2 = tf.constant(3)
type(valor1)
print(valor1)
soma=valor1+valor2
type(soma)
Tensor("Const_8:0", shape=(), dtype=int32)
Out[18]: tensorflow.python.framework.ops.Tensor

print(soma)
Tensor("add_4:0", shape=(), dtype=int32)

sess = tf.compat.v1.Session()

with sess:
    print(sess.run(soma))
5

0

TF v2.0 hỗ trợ chế độ Eager chế độ xem trực quan Chế độ đồ thị của v1.0. Do đó, tf.session () không được hỗ trợ trên v2.0. Do đó, sẽ đề xuất bạn viết lại mã của mình để hoạt động ở chế độ Háo hức.


TF2 có hỗ trợ chế độ không háo hức không? Hay không háo hức chỉ là tính năng tf1? Sau đó, làm cách nào để đánh giá .pbđồ thị trong tf2?
Arty

0

Tensorflow 2.x support's Eager Execution theo mặc định, do đó Session không được hỗ trợ.


0
import tensorflow as tf
sess = tf.Session()

mã này sẽ hiển thị lỗi Thuộc tính trên phiên bản 2.x

để sử dụng mã phiên bản 1.x trong phiên bản 2.x

thử đi

import tensorflow.compat.v1 as tf
sess = tf.Session()
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.