python - 我无法理解这个 AttributeError:模块 'tensorflow.python.framework.ops' 没有属性 '_TensorLike'
问题描述
我在 Google Colab 中使用 Tensorflow,但出现这样的错误。我 100% 确定我的代码在前一天工作,但是当我尝试重新运行它时,我无法解决这个错误。
AttributeError: in user code:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:806 train_function *
return step_function(self, iterator)
/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:81 symbolic_fn_wrapper *
return func(*args, **kwargs)
/usr/local/lib/python3.6/dist-packages/keras/metrics.py:80 __call__ *
update_op = self.update_state(*args, **kwargs)
/usr/local/lib/python3.6/dist-packages/keras/utils/metrics_utils.py:42 decorated *
update_op = update_state_fn(*args, **kwargs)
/usr/local/lib/python3.6/dist-packages/keras/metrics.py:1707 update_state *
metrics_utils.ConfusionMatrix.FALSE_NEGATIVES: self.false_negatives,
/usr/local/lib/python3.6/dist-packages/keras/utils/metrics_utils.py:274 update_confusion_matrix_variables *
thresh_tiled = K.tile(
/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:2682 tile *
if not is_tensor(n):
/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:703 is_tensor *
return isinstance(x, tf_ops._TensorLike) or tf_ops.is_dense_tensor_like(x)
AttributeError: module 'tensorflow.python.framework.ops' has no attribute '_TensorLike'
你能帮我解决这个问题吗?谢谢。
我的代码直到错误是:
!pip uninstall tensorflow -y
!pip install tensorflow-gpu
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
import matplotlib.pyplot as plt # Required to plot data
import numpy as np # Management of arrays
import os # System utils
from scipy.io import loadmat # Required to load .mat files
from scipy import signal # Required for signal processing
import tensorflow as tf
import keras
import random
from collections import Counter
from imblearn.over_sampling import SMOTE
from keras.utils import to_categorical
from sklearn.utils import shuffle
from sklearn.utils import class_weight
from keras.constraints import max_norm
SEED = 1234
tf.random.set_seed(SEED)
np.random.seed(SEED)
random.seed(SEED)
os.environ['PYTHONHASHSEED']=str(SEED)
from google.colab import drive
drive.mount('/content/drive')
save_models = True
x=15
y=3
train_set_path="drive/My Drive/Colab Notebooks/IFMBEproglearn/train_{0}".format(x)+"_{0}.mat".format(y)
test_set_path="drive/My Drive/Colab Notebooks/IFMBEproglearn/test_{0}".format(x)+"_{0}.mat".format(y)
train_events_path="drive/My Drive/Colab Notebooks/IFMBEproglearn/trainEvents_{0}".format(x)+"_{0}.txt".format(y)
train_labels_path="drive/My Drive/Colab Notebooks/IFMBEproglearn/trainLabels_{0}".format(x)+"_{0}.txt".format(y)
train_targets_path="drive/My Drive/Colab Notebooks/IFMBEproglearn/trainTargets_{0}".format(x)+"_{0}.txt".format(y)
test_events_path="drive/My Drive/Colab Notebooks/IFMBEproglearn/testEvents_{0}".format(x)+"_{0}.txt".format(y)
test_targets_path="drive/My Drive/Colab Notebooks/IFMBEproglearn/testTargets_{0}".format(x)+"_{0}.txt".format(y)
numRunsTest_path="drive/My Drive/Colab Notebooks/IFMBEproglearn/runs_per_block_{0}".format(x)+"_{0}.txt".format(y)
if not os.path.exists(train_set_path):
print("Missing file: {}", train_set_path)
else:
# Load the required data
training_set = loadmat(train_set_path)['newData']
if not os.path.exists(test_set_path):
print("Missing file: {}", test_set_path)
else:
# Load the required data
testing_set = loadmat(test_set_path)['newData']
if not os.path.exists(train_events_path):
print("Missing file: {}", train_events_path)
else:
# Load the required data
f = open(train_events_path, 'r+')
train_events = [line for line in f.readlines()]
f.close()
if not os.path.exists(train_labels_path):
print("Missing file: {}", train_labels_path)
else:
# Load the required data
f = open(train_labels_path, 'r+')
train_labels = [line for line in f.readlines()]
f.close()
if not os.path.exists(train_targets_path):
print("Missing file: {}", train_targets_path)
else:
# Load the required data
f = open(train_targets_path, 'r+')
train_targets = [line for line in f.readlines()]
f.close()
if not os.path.exists(test_events_path):
print("Missing file: {}", test_events_path)
else:
# Load the required data
f = open(test_events_path, 'r+')
test_events = [line for line in f.readlines()]
f.close()
if not os.path.exists(test_targets_path):
print("Missing file: {}", test_targets_path)
else:
# Load the required data
f = open(test_targets_path, 'r+')
test_targets = [line for line in f.readlines()]
f.close()
if not os.path.exists(numRunsTest_path):
print("Missing file: {}", numRunsTest_path)
else:
# Load the required data
f = open(numRunsTest_path, 'r+')
test_numRuns = [line for line in f.readlines()]
f.close()
training_array=np.asarray(training_set)
training_array=np.moveaxis(training_array, -1, 0)
testing_array=np.asarray(testing_set)
testing_array=np.moveaxis(testing_array, -1, 0)
shaped_testing_array=np.expand_dims(testing_array,-1)
shaped_testing_array.shape
events_array=np.asarray(train_events)
shaped_events=np.expand_dims(events_array,-1)
shaped_events.shape
labels_array=np.asarray(train_labels)
shaped_labels=np.expand_dims(labels_array,-1)
shaped_labels.shape
targets_array=np.asarray(train_targets)
test_events_array=np.asarray(test_events)
shaped_test_events=np.expand_dims(test_events_array,-1)
shaped_test_events.shape
test_targets_array=np.asarray(test_targets)
shaped_test_targets=np.expand_dims(test_targets_array,-1)
shaped_test_targets.shape
test_numRuns_array=np.asarray(test_numRuns)
shaped_test_numRuns=np.expand_dims(test_numRuns_array,-1)
shaped_test_numRuns.shape
training_array.shape
shaped_training_array=np.expand_dims(training_array,-1)
shaped_training_array.shape
shaped_targets=np.expand_dims(targets_array,-1)
shaped_targets.shape
shaped_targets_cat = to_categorical(shaped_targets)
shaped_targets_cat.shape
numChannels=8
numSamples=150
numClasses=2
SHAPE=(numChannels,numSamples,1)
model=tf.keras.Sequential([tf.keras.layers.Input(shape=SHAPE),
tf.keras.layers.ZeroPadding2D(input_shape=(numChannels,numSamples,1),padding=(0,32)),
tf.keras.layers.Conv2D(filters=16,kernel_size=(1,65),strides=(1,1),padding='valid',data_format='channels_last',use_bias=False),
tf.keras.layers.BatchNormalization(axis=-1,momentum=0.99,epsilon=0.001,center=False,scale=False),
tf.keras.layers.DepthwiseConv2D(kernel_size=(8,1),strides=(1, 1),padding='valid',depth_multiplier=2,data_format='channels_last',kernel_constraint=max_norm(1.),use_bias=False),
tf.keras.layers.BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001,center=False,scale=False),
tf.keras.layers.ELU(),
tf.keras.layers.AveragePooling2D(pool_size=(1, 4),strides=None,padding='valid',data_format=None),
tf.keras.layers.Dropout(rate=0.50,noise_shape=None,seed=None),
tf.keras.layers.ZeroPadding2D(padding=(0,8)),
tf.keras.layers.SeparableConvolution2D(filters=16,kernel_size=(1,17),strides=(1,1),padding='valid',use_bias=False),
tf.keras.layers.BatchNormalization(axis=-1,momentum=0.99,epsilon=0.001,center=False,scale=False),
tf.keras.layers.ELU(),
tf.keras.layers.AveragePooling2D(pool_size=(1,8),strides=None,padding='valid',data_format=None),
tf.keras.layers.Dropout(rate=0.50,noise_shape=None,seed=None),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(numClasses,activation='softmax')])
model.summary()
model.compile(
optimizer = tf.keras.optimizers.Adam(learning_rate=0.005, beta_1=0.9, beta_2=0.999, epsilon=1e-07, amsgrad=False, name='Adam'),
loss = 'categorical_crossentropy',
metrics = ['accuracy',keras.metrics.AUC(name='auc')]
)
class_weights = class_weight.compute_class_weight('balanced',
np.unique(targets_array),
targets_array)
class_weights = dict(enumerate(class_weights))
class_weights
callbacks = []
es_callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=5, mode='min', restore_best_weights=True)
callbacks.append(es_callback)
#class_weights={0:1 , 1:1}
在我自己检查数据集之前,一切都很完美。但是,使用此代码片段,我收到错误:
history = model.fit(shaped_training_array, shaped_targets_cat, batch_size=128, epochs=1000, validation_split=0.15, callbacks=callbacks, class_weight=class_weights, shuffle=True)
解决方案
希望这会奏效。https://github.com/tensorflow/tensorflow/issues/38589#issuecomment-665930503
from tensorflow.python.framework import tensor_util
def is_tensor(x):
return tensor_util.is_tensor(x)
推荐阅读
- mysql - 将 bash 变量应用于 mysql 插入语句 - 适用于某些人而不适用于其他人
- macos - 是否可以对安全警告进行微调控制?
- stripe-payments - Stripe 上的“没有这样的付款意图:(null)”
- swiftui - 是否可以在 Text() 中添加内嵌按钮?
- sql - SQL:删除记录取决于两个变量条件
- php - PHP 安全 URL 变量
- maven - 当使用带有 Artifactory 的 uploadSpec 时,我可以让 Artifactory 生成默认 POM 吗?
- git - 进一步更改后我需要再次 git add 吗?
- c++ - Visual Studio 中的 C++ 影响分析
- flutter - 错误:没有为类“BuildContext”定义方法“dependOnInheritedWidgetOfExactType”