Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用线性回归和Tensorflow2的神经网络实现无误差_Python_Tensorflow_Neural Network_Nlp_Word Embedding - Fatal编程技术网

Python 使用线性回归和Tensorflow2的神经网络实现无误差

Python 使用线性回归和Tensorflow2的神经网络实现无误差,python,tensorflow,neural-network,nlp,word-embedding,Python,Tensorflow,Neural Network,Nlp,Word Embedding,我正在完成我自己的沙盒项目,希望尝试并实现NLP,但结果是线性回归。作为参考,我使用的数据集包含葡萄酒评论和相应的1到100分,因此我使用线性回归而不是分类 但我收到一条错误消息,我不确定这是否是数据类型或维度问题的结果,我也不知道为什么或如何解决它 我将提供下面的代码,以及一些显示一些对象的维度的中间结果,因为我认为这可能对解决这个问题有用 df = pd.read_csv('winemag-data_first150k.csv', encoding='ISO-8859-1') y = df[

我正在完成我自己的沙盒项目,希望尝试并实现NLP,但结果是线性回归。作为参考,我使用的数据集包含葡萄酒评论和相应的1到100分,因此我使用线性回归而不是分类

但我收到一条错误消息,我不确定这是否是数据类型或维度问题的结果,我也不知道为什么或如何解决它

我将提供下面的代码,以及一些显示一些对象的维度的中间结果,因为我认为这可能对解决这个问题有用

df = pd.read_csv('winemag-data_first150k.csv', encoding='ISO-8859-1')
y = df['points'].astype(int)
X = df['description'].astype(str)

# split up the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)

MAX_VOCAB_SIZE = 35000
tokenizer = Tokenizer(num_words=MAX_VOCAB_SIZE)
tokenizer.fit_on_texts(X_train)
sequences_train = tokenizer.texts_to_sequences(X_train)
sequences_test = tokenizer.texts_to_sequences(X_test)

word2idx = tokenizer.word_index
V = len(word2idx)
print('Found %s unique tokens.' % V)
   Found 33012 unique tokens.

data_train = pad_sequences(sequences_train)
print('Shape of data train tensor:', data_train.shape)

# get sequence length
T = data_train.shape[1]
   Shape of data train tensor: (101123, 136)

data_test = pad_sequences(sequences_test, maxlen=T)
print('Shape of data test tensor:', data_test.shape)
   Shape of data test tensor: (49807, 136)

# Create the model

# We get to choose embedding dimensionality
D = 20

# Hidden state dimensionality
M = 15



i = Input(shape=(T,))
x = Embedding(V + 1, D)(i)
x = LSTM(M, return_sequences=True)(x)
x = GlobalMaxPooling1D()(x)
x = Dense(1)(x)

model = Model(i, x)

model.compile(optimizer='adam', loss='mse')


# learning rate scheduler
def schedule(epoch, lr):
  if epoch >= 50:
    return 0.0001
  return 0.001
 

scheduler = tf.keras.callbacks.LearningRateScheduler(schedule)


# Train the model
r = model.fit(X, y, epochs=200, callbacks=[scheduler])
然后,我得到了错误消息以及关于维度的警告:

Epoch 1/200
WARNING:tensorflow:Model was constructed with shape (None, 136) for input Tensor("input_10:0", shape=(None, 136), dtype=float32), but it was called on an input with incompatible shape (None, 1).
WARNING:tensorflow:Model was constructed with shape (None, 136) for input Tensor("input_10:0", shape=(None, 136), dtype=float32), but it was called on an input with incompatible shape (None, 1).
---------------------------------------------------------------------------
UnimplementedError                        Traceback (most recent call last)
<ipython-input-121-0f68916ec23b> in <module>
     13 
     14 # Train the model
---> 15 r = model.fit(X, y, epochs=200, callbacks=[scheduler])

~\anaconda3\envs\newenvt\lib\site-packages\tensorflow\python\keras\engine\training.py in _method_wrapper(self, *args, **kwargs)
    106   def _method_wrapper(self, *args, **kwargs):
    107     if not self._in_multi_worker_mode():  # pylint: disable=protected-access
--> 108       return method(self, *args, **kwargs)
    109 
    110     # Running inside `run_distribute_coordinator` already.

~\anaconda3\envs\newenvt\lib\site-packages\tensorflow\python\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)
   1096                 batch_size=batch_size):
   1097               callbacks.on_train_batch_begin(step)
-> 1098               tmp_logs = train_function(iterator)
   1099               if data_handler.should_sync:
   1100                 context.async_wait()

~\anaconda3\envs\newenvt\lib\site-packages\tensorflow\python\eager\def_function.py in __call__(self, *args, **kwds)
    778       else:
    779         compiler = "nonXla"
--> 780         result = self._call(*args, **kwds)
    781 
    782       new_tracing_count = self._get_tracing_count()

~\anaconda3\envs\newenvt\lib\site-packages\tensorflow\python\eager\def_function.py in _call(self, *args, **kwds)
    838         # Lifting succeeded, so variables are initialized and we can run the
    839         # stateless function.
--> 840         return self._stateless_fn(*args, **kwds)
    841     else:
    842       canon_args, canon_kwds = \

~\anaconda3\envs\newenvt\lib\site-packages\tensorflow\python\eager\function.py in __call__(self, *args, **kwargs)
   2827     with self._lock:
   2828       graph_function, args, kwargs = self._maybe_define_function(args, kwargs)
-> 2829     return graph_function._filtered_call(args, kwargs)  # pylint: disable=protected-access
   2830 
   2831   @property

~\anaconda3\envs\newenvt\lib\site-packages\tensorflow\python\eager\function.py in _filtered_call(self, args, kwargs, cancellation_manager)
   1841       `args` and `kwargs`.
   1842     """
-> 1843     return self._call_flat(
   1844         [t for t in nest.flatten((args, kwargs), expand_composites=True)
   1845          if isinstance(t, (ops.Tensor,

~\anaconda3\envs\newenvt\lib\site-packages\tensorflow\python\eager\function.py in _call_flat(self, args, captured_inputs, cancellation_manager)
   1921         and executing_eagerly):
   1922       # No tape is watching; skip to running the function.
-> 1923       return self._build_call_outputs(self._inference_function.call(
   1924           ctx, args, cancellation_manager=cancellation_manager))
   1925     forward_backward = self._select_forward_and_backward_functions(

~\anaconda3\envs\newenvt\lib\site-packages\tensorflow\python\eager\function.py in call(self, ctx, args, cancellation_manager)
    543       with _InterpolateFunctionError(self):
    544         if cancellation_manager is None:
--> 545           outputs = execute.execute(
    546               str(self.signature.name),
    547               num_outputs=self._num_outputs,

~\anaconda3\envs\newenvt\lib\site-packages\tensorflow\python\eager\execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
     57   try:
     58     ctx.ensure_initialized()
---> 59     tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
     60                                         inputs, attrs, num_outputs)
     61   except core._NotOkStatusException as e:

UnimplementedError:  Cast string to float is not supported
     [[node functional_11/Cast (defined at <ipython-input-121-0f68916ec23b>:15) ]] [Op:__inference_train_function_17206]

Function call stack:
train_function

纪元1/200
警告:tensorflow:为输入张量(“input_10:0”,shape=(None,136),dtype=float32)构造了形状(None,136)的模型,但在形状不兼容的输入(None,1)上调用了该模型。
警告:tensorflow:为输入张量(“input_10:0”,shape=(None,136),dtype=float32)构造了形状(None,136)的模型,但在形状不兼容的输入(None,1)上调用了该模型。
---------------------------------------------------------------------------
未实现错误回溯(最近一次呼叫最后一次)
在里面
13
14#训练模特
--->15R=model.fit(X,y,epochs=200,回调=[scheduler])
~\anaconda3\envs\newenvt\lib\site packages\tensorflow\python\keras\engine\training.py in\u method\u包装(self,*args,**kwargs)
106定义方法包装(self,*args,**kwargs):
107如果不是self._处于_multi_worker_模式():#pylint:disable=受保护的访问
-->108返回方法(self、*args、**kwargs)
109
110#已经在“运行分配协调器”内部运行了。
~\anaconda3\envs\newenvt\lib\site packages\tensorflow\python\keras\engine\training.py(self、x、y、批大小、历元、冗余、回调、验证拆分、验证数据、洗牌、类权重、样本权重、初始历元、每个历元的步骤、验证步骤、验证批次大小、验证频率、最大队列大小、工人、使用多处理)
1096批次大小=批次大小):
1097回拨。列车上批次开始(步骤)
->1098 tmp_日志=训练函数(迭代器)
1099如果数据处理程序应同步:
1100 context.async_wait()
~\anaconda3\envs\newenvt\lib\site packages\tensorflow\python\eager\def\u function.py在调用中(self,*args,**kwds)
778其他:
779 compiler=“nonXla”
-->780结果=自身调用(*args,**kwds)
781
782 new_tracing_count=self._get_tracing_count()
~\anaconda3\envs\newenvt\lib\site packages\tensorflow\python\eager\def_function.py in_调用(self,*args,**kwds)
838#提升成功,因此变量已初始化,我们可以运行
839#无状态函数。
-->840返回自我。无状态的(*args,**kwds)
841其他:
842佳能args,佳能kwds=\
~\anaconda3\envs\newenvt\lib\site packages\tensorflow\python\eager\function.py在调用中(self,*args,**kwargs)
2827带自锁:
2828图形函数,args,kwargs=self.\u可能定义函数(args,kwargs)
->2829返回图形\函数。\过滤\调用(args,kwargs)\ pylint:disable=受保护访问
2830
2831@property
~\anaconda3\envs\newenvt\lib\site packages\tensorflow\python\eager\function.py in\u filtered\u调用(self、args、kwargs、cancellation\u manager)
1841“args”和“kwargs”。
1842     """
->1843返回自我。呼叫公寓(
1844[t代表嵌套中的t。展平((args,kwargs),展开=真)
1845如果存在(t)(操作张量,
~\anaconda3\envs\newenvt\lib\site packages\tensorflow\python\eager\function.py在调用平面中(self、args、捕获的输入、取消管理器)
1921年,并热切地执行(U):
1922年#没有磁带在观看;跳到运行函数。
->1923返回self.\u构建\u调用\u输出(self.\u推断\u函数.call(
1924 ctx,参数,取消管理器=取消管理器)
1925向前\向后=自。\选择向前\和向后\功能(
调用中的~\anaconda3\envs\newenvt\lib\site packages\tensorflow\python\eager\function.py(self、ctx、args、cancellation\u manager)
543带_插值函数误差(自):
544如果取消管理器为无:
-->545输出=execute.execute(
546 str(自我签名、姓名),
547 num_输出=自。_num_输出,
快速执行中的~\anaconda3\envs\newenvt\lib\site packages\tensorflow\python\eager\execute.py(操作名称、数值输出、输入、属性、ctx、名称)
57尝试:
58 ctx.确保_已初始化()
--->59张量=pywrap\u tfe.tfe\u Py\u Execute(ctx.\u句柄、设备名称、操作名称、,
60个输入、属性、数量输出)
61除堆芯外,其他状态除外,如e:
UnimplementedError:不支持将字符串强制转换为浮点
[node functional_11/Cast(定义于:15)][Op:_推理_train_functional_17206]
函数调用堆栈:
列车功能
我不完全确定需要更改什么,但如果您有任何建议,我将不胜感激。

来自评论

X
传递给
model.fit
,它字面上有字符串值,这是一个神经网络 网络不能是输入字符串值(转述自Snoopy博士)


你把X传递给model.fit,它实际上有字符串值,神经网络不能输入字符串值。天哪,我真不敢相信我这么做了。你说得对。你赢了。谢谢。