В качестве упражнения я пытаюсь обучить модель классификации с помощью Tensorflow v1 без использования keras, sklearn или какой-либо другой библиотеки, которая значительно облегчила бы мою жизнь... лол.
Я продолжаю получать эта ошибка, и я не могу понять, что не так с моим кодом:
# imports
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O
import os,shutil, cv2, itertools
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior() # use Tensorflow v1
Для простоты я изменил размер каждого изображения до 64 x 64.
Поскольку каналов 3, размер входного вектора X wiz n составляет 64 x 64. x 3 (=12288).
Чтобы сократить время вычислений, я использую только 3000 изображений из обучающих данных.
def tf_train(X, Y, batch_size=20):
# Dataset (inputs and labels)
D=12880
x = tf.placeholder(tf.float32, [batch_size, D])
y_ = tf.placeholder(tf.float32, [batch_size, 1])
# random variable
W = tf.Variable(tf.random_normal([D, 1],stddev=0.1))
z=tf.matmul(x,W)
# Define loss and optimizer
cross_entropy = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=z, labels=y_))
train_step = tf.train.GradientDescentOptimizer(1e-2).minimize(cross_entropy)
sess = tf.InteractiveSession()
tf.initialize_all_variables().run() #initializes W and z
# Train
for epoch in range (3000):
idx = np.random.choice(len(TRAIN_DATA), batch_size, replace=False)
#idx = np.random.permutation(np.arange(X.shape[1])) [:batch_size]
_, l = sess.run([train_step, cross_entropy], feed_dict={x: X[idx], y_: Y[0,idx]})
if epoch%100 == 0:
print('loss: '+str(l))
< /code>
А затем, когда я начинаю обучать свою модель: < /p>
tf_train(X,Y)
< /code>
Я получаю следующий вывод: < /p>
/opt/conda/lib/python3.7/site-packages/tensorflow/python/client/session.py:1766: UserWarning: An interactive session is already active. This can cause out-of-memory errors in some cases. You must explicitly call `InteractiveSession.close()` to release resources held by the other session(s).
warnings.warn('An interactive session is already active. This can '
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/tmp/ipykernel_33/1897119706.py in
----> 1 tf_train(X,Y)
/tmp/ipykernel_33/3528951873.py in tf_train(X, Y, batch_size)
29 idx = np.random.choice(len(TRAIN_DATA), batch_size, replace=False)
30 #idx = np.random.permutation(np.arange(X.shape[1])) [:batch_size]
---> 31 _, l = sess.run([train_step, cross_entropy], feed_dict={x: X[idx], y_: Y[0,idx]})
32 if epoch%100 == 0:
33 print('loss: '+str(l))
/opt/conda/lib/python3.7/site-packages/tensorflow/python/util/dispatch.py in wrapper(*args, **kwargs)
204 """Call target, and fall back on dispatchers if there is a TypeError."""
205 try:
--> 206 return target(*args, **kwargs)
207 except (TypeError, ValueError):
208 # Note: convert_to_eager_tensor currently raises a ValueError, not a
/opt/conda/lib/python3.7/site-packages/tensorflow/python/ops/array_ops.py in _slice_helper(tensor, slice_spec, var)
1012 new_axis_mask |= (1 1014 _check_index(s)
1015 begin.append(s)
1016 end.append(s + 1)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/ops/array_ops.py in _check_index(idx)
886 # TODO(slebedev): IndexError seems more appropriate here, but it
887 # will break `_slice_helper` contract.
--> 888 raise TypeError(_SLICE_TYPE_ERROR + ", got {!r}".format(idx))
889
890
TypeError: Only integers, slices (`:`), ellipsis (`...`), tf.newaxis (`None`) and scalar tf.int32/tf.int64 tensors are valid indices, got array([2282, 1114, 1884, 2812, 887, 381, 1723, 2031, 820, 2989, 314,
1800, 372, 2219, 1937, 2313, 2264, 2154, 2168, 283])
< /code>
Очевидно, что ошибка вызвана < /p>
_, l = sess.run([train_step, cross_entropy], feed_dict={x: X[idx], y_: Y[0,idx]})
В качестве упражнения я пытаюсь обучить модель классификации с помощью Tensorflow v1 без использования keras, sklearn или какой-либо другой библиотеки, которая значительно облегчила бы мою жизнь... лол. Я продолжаю получать эта ошибка, и я не могу понять, что не так с моим кодом: [code]# imports import numpy as np # linear algebra import pandas as pd # data processing, CSV file I/O
import os,shutil, cv2, itertools
import tensorflow.compat.v1 as tf tf.disable_v2_behavior() # use Tensorflow v1 [/code] Для простоты я изменил размер каждого изображения до 64 x 64. Поскольку каналов 3, размер входного вектора X wiz n составляет 64 x 64. x 3 (=12288). Чтобы сократить время вычислений, я использую только 3000 изображений из обучающих данных. [code]TRAIN_DATA_DIR_PREFIX = '/kaggle/input/cat-and-dog/training_set/training_set/' TRAIN_DATA_DOG_DIR = TRAIN_DATA_DIR_PREFIX + 'dogs/' TRAIN_DATA_CAT_DIR = TRAIN_DATA_DIR_PREFIX + 'cats/'
N_x = 64 * 64 * 3
TRAIN_DOG = [(TRAIN_DATA_DOG_DIR+i, 1) for i in os.listdir(TRAIN_DATA_DOG_DIR) if i.endswith(".jpg")] TRAIN_DOG = TRAIN_DOG[:1500]
TRAIN_CAT = [(TRAIN_DATA_CAT_DIR+i, 0) for i in os.listdir(TRAIN_DATA_CAT_DIR) if i.endswith(".jpg")] TRAIN_CAT = TRAIN_CAT[:1500]
def prepare(data): X = np.ndarray((N_x,len(TRAIN_DATA)), dtype=np.uint8) print ("X shape is {}".format(X.shape)) Y = np.zeros((1,len(TRAIN_DATA))) print ("Y shape is {}".format(Y.shape)) for i,(image_path, y) in enumerate(data): Y[0,i] = y image = read_image(image_path) X[:,i] = np.squeeze(image.reshape((N_x,1))) return X,Y
X,Y = prepare(TRAIN_DATA) Y = tf.transpose(Y) X = tf.transpose(X) print ("after transpose X shape is {}".format(X.shape)) print ("after transpose Y shape is {}".format(Y.shape)) [/code] Выход: [code]TRAIN_DATA : 3000 X shape is (12288, 3000) Y shape is (1, 3000) after transpose X shape is (3000, 12288) after transpose Y shape is (3000, 1) [/code] Затем я определяю свою функцию tf_train: [code]def tf_train(X, Y, batch_size=20): # Dataset (inputs and labels)
D=12880
x = tf.placeholder(tf.float32, [batch_size, D]) y_ = tf.placeholder(tf.float32, [batch_size, 1])
# random variable W = tf.Variable(tf.random_normal([D, 1],stddev=0.1))
z=tf.matmul(x,W)
# Define loss and optimizer cross_entropy = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=z, labels=y_))
sess = tf.InteractiveSession() tf.initialize_all_variables().run() #initializes W and z
# Train for epoch in range (3000): idx = np.random.choice(len(TRAIN_DATA), batch_size, replace=False) #idx = np.random.permutation(np.arange(X.shape[1])) [:batch_size] _, l = sess.run([train_step, cross_entropy], feed_dict={x: X[idx], y_: Y[0,idx]}) if epoch%100 == 0: print('loss: '+str(l)) < /code> А затем, когда я начинаю обучать свою модель: < /p> tf_train(X,Y) < /code> Я получаю следующий вывод: < /p> /opt/conda/lib/python3.7/site-packages/tensorflow/python/client/session.py:1766: UserWarning: An interactive session is already active. This can cause out-of-memory errors in some cases. You must explicitly call `InteractiveSession.close()` to release resources held by the other session(s). warnings.warn('An interactive session is already active. This can ' --------------------------------------------------------------------------- TypeError Traceback (most recent call last) /tmp/ipykernel_33/1897119706.py in ----> 1 tf_train(X,Y)
/tmp/ipykernel_33/3528951873.py in tf_train(X, Y, batch_size) 29 idx = np.random.choice(len(TRAIN_DATA), batch_size, replace=False) 30 #idx = np.random.permutation(np.arange(X.shape[1])) [:batch_size] ---> 31 _, l = sess.run([train_step, cross_entropy], feed_dict={x: X[idx], y_: Y[0,idx]}) 32 if epoch%100 == 0: 33 print('loss: '+str(l))
/opt/conda/lib/python3.7/site-packages/tensorflow/python/util/dispatch.py in wrapper(*args, **kwargs) 204 """Call target, and fall back on dispatchers if there is a TypeError.""" 205 try: --> 206 return target(*args, **kwargs) 207 except (TypeError, ValueError): 208 # Note: convert_to_eager_tensor currently raises a ValueError, not a
Я реализую метод FFT, и когда я перемешиваю элементы данных с помощью перестановки битов, я получаю следующую ошибку:
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis
(`None`) and integer or boolean arrays are valid...
У меня есть объект json с произвольными значениями внутри. И я хочу десериализовать его на карте. Все в порядке, кроме преобразования целых чисел в двойные. См. пример:
{ id :1, inner_obj :{ key : value , num :666, map :{ key : value }}}...
Как указать, что функция может принимать список чисел, которые могут быть целыми или плавающими?
Я попробовал создать новый тип, используя Union, вот так:
num = Union